2014-09-25 75 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