Php Mysql Insert准备好的语句不工作

Php Mysql Insert准备好的语句不工作,php,mysql,sql,Php,Mysql,Sql,我在第三个表中插入一些工作人员时遇到问题 表first包含第一个\u id、测试\u名称 |表二包含第二个id、第二个测试id |表first second包含第一个\u id、第二个\u id、注释(可以为空) 在PHPMyadmin中,我可以进行插入,但我不知道为什么stmt不起作用 谢谢。在表名周围添加反勾号: $stmt = $this->conn->prepare("INSERT INTO `first-second` (first_id, second_id) value

我在第三个表中插入一些工作人员时遇到问题

表first包含第一个\u id、测试\u名称 |表二包含第二个id、第二个测试id |表first second包含第一个\u id、第二个\u id、注释(可以为空)

在PHPMyadmin中,我可以进行插入,但我不知道为什么stmt不起作用


谢谢。

在表名周围添加反勾号:

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

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

我假设您使用的是textbox/textarea或任何其他要求输入的类型,以将数据插入数据库。您的输入中可能包含导致查询失败的特殊字符。在插入查询之前,尝试使用
mysqli\u real\u escape\u 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')");
顺便说一下,可以在表名中使用连字符,但不推荐使用:

希望这有帮助


谢谢

我会避免用破折号定义表名,这不是一个好做法。不管怎样,只要在表名之间加上反勾,就可以解决问题

大概是这样的:

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

请尝试删除
$result\u insert=
,因为您没有在后面调用该变量。我自己对连字符有一种感觉,我只是不是100%确定。我自己从来不使用连字符;在任何地方
$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();
"INSERT INTO `table-mame` WHERE ...