所以我只是从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并将其保存到我的对象表中的所有者?
答案 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();