2016-01-12 142 views
1

因此,我只是從ajax POST獲取數據到php api並試圖將其保存在數據庫中。我的表格有a_id,a_owner,a_material,a_size,a_product。 所需的數據正確傳入api,但無法保存。無法執行mysql語句

這是我的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並將其保存到我的對象表中的所有者?

+0

你可以發佈您收到錯誤消息? – Nate

+2

':產品1'什麼是1? – Matt

+0

'$ owner'是一個查詢,而不是一個整數。您的報價用法也不正確,如果您計劃執行該報價,則應使用參數化版本。 – chris85

回答

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(); 
+0

嗨。你能看看我更新的問題嗎?謝謝 – joejoeso

+0

所以,你想通過用戶的電子郵件獲得u_id作爲u_id插入到對象表中的a_owner?我更新了我的代碼;我不知道你是否仍然需要MAX(a_id),我預計每個用戶都沒有重複的電子郵件 –