所以我只是从ajax POST获取数据到php api,并尝试将其保存在数据库中。我的表具有a_id,a_owner,a_material,a_size,a_product。
所需的数据已正确传递到api,但无法保存。

这是我的sql语句。另外,我不确定我是否正确使用了$ owner变量。谢谢你们

$owner = "SELECT 'u_id' FROM 'user' WHERE 'u_email' = $data['email']";
$sth = $dbh -> prepare("INSERT INTO object (a_id, a_owner, a_material, a_size, a_product) SELECT MAX(a_id)+1, :owner, :material, :size, :product     FROM object");
$sth->bindParam(':owner', $owner, PDO::PARAM_INT);
$sth->bindParam(':material', $data["material"], PDO::PARAM_INT);
$sth->bindParam(':size', $data['size'], PDO::PARAM_INT);
$sth->bindParam(':product', $data['product'], PDO::PARAM_INT);
$sth->execute();


更新资料
所以我想我坚持的地方是获取“所有者”信息。
为了明确起见,所有者属于对象表,其值与用户表中的用户ID相同。用户表也有一个电子邮件列。那么,如何引用电子邮件以获取用户ID并将其保存到我的对象表中的所有者中?

最佳答案

您的SQL语句格式错误,请尝试以下操作:

$sth = $dbh -> prepare("
   INSERT INTO object
       (a_id, a_owner, a_material, a_size, a_product)
   VALUES
       (
            (SELECT MAX(a_id)+1 FROM object),
            (SELECT u_id FROM user WHERE u_email = :email),
            :material,
            :size,
            :product
       )
");
$sth->bindParam(':email', $data['email'], PDO::PARAM_STR);
$sth->bindParam(':material', $data["material"], PDO::PARAM_INT);
$sth->bindParam(':size', $data['size'], PDO::PARAM_INT);
$sth->bindParam(':product', $data['product'], PDO::PARAM_INT);
$sth->execute();

关于php - 无法执行mysql语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34754329/

10-14 00:23