Mysql Insert预处理语句不起作用

时间:2014-03-03 19:57:37

标签: php mysql sql

我在第3张桌子中插入一些工作人员时遇到了问题。

表首先包含 first_id,test_name |表格第二个包含 second_id,test_second |表first-second包含 first_id,second_id,note (可以为null)

$first_id = 1;
$second_id = 3;

$stmt = $this->conn->prepare("INSERT INTO first-second (first_id, second_id) values (?, ?)");
$stmt->bind_param("ii", $first_id, $second_id);
$result_insert = $stmt->execute();
$stmt->close();

在PHPMyadmin中我可以插入但我不知道为什么stmt没有工作。

谢谢。

4 个答案:

答案 0 :(得分:1)

我会避免用破折号定义表名,这不是一个好习惯。无论如何,只要在表格的名称之间添加反引号就可以解决问题。

这样的事情:

"INSERT INTO `table-mame` WHERE ...

答案 1 :(得分:0)

在表名周围添加反引号:

$stmt = $this->conn->prepare("INSERT INTO `first-second` (first_id, second_id) values (?, ?)");

建议不要在表名中使用“奇怪”字符。

答案 2 :(得分:0)

我假设您正在使用textbox / textarea或任何其他要求输入的数据以将数据插入数据库。您的输入可能包含特殊字符,导致查询失败。在插入查询之前尝试使用mysqli_real_escape_string

$input1=mysqli_real_escape_string($_POST['input1']);
$input2=mysqli_real_escape_string($_POST['input2']);
$input3=mysqli_real_escape_string($_POST['input3']);

mysqli_query($conn,"INSERT INTO first-second (first_id, second_id, note) VALUES ('$input1','$input2','$input3')");

顺便说一句,在表名中使用连字符是可以的,但不推荐:
Can a table field contain a hyphen?

答案 3 :(得分:0)

$first_id = 1;
$second_id = 3;

$stmt = $this->conn->prepare("INSERT INTO first-second (first_id, second_id) values (:f1, :f2)");
$result_insert = $stmt->execute(array('f1'=>$first_id , 'f2'=>$second_id));
$stmt->close();

希望得到这个帮助。

由于