2014-09-25 73 views
0

你好,我想從$ _SESSION所有插入的行與價值$值$關鍵 所以像foreach ($_SESSION as $key => $value) {} Imlooking的位置:mysqli的行Best way to INSERT many values in mysqli? 名字相同,若$鍵的名稱。我需要在它的$鍵插入每個$值(行)簡單對象SQLI插入

代碼:

$query = "INSERT INTO testtable VALUES (?)"; 
$stmt = $dbc->prepare($query); 
$stmt->bind_param("s", $key); 
$mysqli->query("START TRANSACTION"); 
foreach ($_SESSION as $key => $value) { 
    $stmt->execute(); 
} 
$stmt->close(); 
$mysqli->query("COMMIT"); 

回答

0

您的查詢有語法錯誤,你從來不屑檢查:

$query = "INSERT INTO testtable podatki VALUES (?)"; 
         ^^^^^^^^^^^^^^^^^ 

如果這是真正的表名,那麼應該用反引號引用:

$query = "INSERT INTO `testtable podatki` VALUES (?)"; 
         ^-----------------^ 

如果podatki是一個字段名,那麼它應該是

$query = "INSERT INTO testtable (podatki) VALUES (?)"; 
           ^-------^ 

而且也從來不認爲一個DB操作成功。經常檢查錯誤:

$stmt = $dbc->prepare($query); 
if (!$stmt) { 
    die(mysqli_error($dbc)); 
} 
+0

對不起,我的壞..應該是「INSERT INTO testtable VALUES(?)」; – Newb 2014-09-25 17:08:37

0

的錯誤是說你試圖調用一個成員函數,即bind_param(),非對象。

這意味着,這條線:

$stmt = $dbc->prepare($query); 

沒有成功,

,因此你必須當您嘗試設置爲$stmt

所以價值不正確的返回值請致電bind_param它失敗,因爲$stmt不是它期望的對象的類型。

+0

有什麼想法嗎?我不明白代碼。 php中的對象編程令我感到困惑 – Newb 2014-09-25 17:14:54

+0

@Newb在$ stmt = $ dbc-> prepare($ query)之後添加一行;'用這個代碼:'var_dump($ stmt);死;'並編輯你的問題發佈結果。 – 2014-09-25 17:17:13

+0

bool(false)是我得到的。 $ dbc是$ dbc = new mysqli(stuff ..);對?你還可以檢查這個代碼背後的邏輯嗎? – Newb 2014-09-25 17:19:44