2017-07-29 116 views
1

我对插入语句有一个奇怪的问题。发生了什么事,如果我插入到只有一列,它的工作原理,但任何大于1列没有得到插入没有错误显示mysql准备的语句插入问题

这工作

$db = mysqli new('localhost','root','','db'); 
$stmt = $db->prepare("insert into test (id) values(?)"); 
echo $db->error; 
$stmt->bind_param("s",$id); 
$stmt->execute(); 

但不是这样的:

$id = 1; 
$name = "test"; 
$stmt = $db->prepare("insert into test (id,name) values(?,?)"); 
echo $db->error; 
$stmt->bind_param("ss",$id, $name); 
$stmt->execute(); 

有没有人有线索?不知道这是有益的,但某些列没有校对选项卡下的值和其他表有latin1_swedish_ci

+1

只是好奇;看到你在使用面向对象的代码,为什么不使用PDO? – Strawberry

+0

你尝试过单独插入'name'吗?你的语法看起来正确。 – colburton

+0

'$ stmt-> execute();'调用的返回值是什么?如果它是'false','$ stmt-> error'的值是多少? – Progman

回答

0

尝试单独绑定的参数,如下图所示:

$stmt = $db->prepare("insert into test (id,name) values(:id, :name)"); 
echo $db->error; 
$stmt->bind_param(":id", $id); 
$stmt->bind_param(":name", $name); 
$stmt->execute();