无法执行mysql语句

时间:2016-01-12 21:44:15

标签: php mysql pdo

所以我只是从ajax POST获取数据到php api并尝试将其保存在db中。我的表有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();

更新 所以我猜我坚持的地方就是“拥有者”#39;信息。
因此,为了澄清,所有者属于对象表,它的值与User表中的用户ID相同。用户表还有一个电子邮件列。那么如何引用电子邮件来获取用户ID并将其保存到我的对象表中的所有者?

1 个答案:

答案 0 :(得分:0)

您的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();