我正在创建一个类,我有一个函数,我希望从一些输入中将一些数据插入到表中。它可以工作,如果我检查表但我不断得到错误“准备中的参数数量与bind_result中的arg的数量不匹配”。另外我不知道我的方法是否正确..
private function insertData($foldName,$foldClass,$foldLink) {
$sql = "INSERT INTO folders (folder_name,folder_class,folder_link) VALUES ('$foldName','$foldClass','$foldLink')";
if($stmt = $this->connect->prepare($sql)) {
$stmt->execute();
$stmt->bind_result($foldName,$foldClass,$foldLink);
$stmt->close();
$error = false;
$message['error'] = false;
$message['message'] = "Data Successfuly Inserted";
return json_encode($message);
}
else {
$error = true;
$message['error'] = true;
$message['message'] = "Data Failed To Insert";
return json_encode($message);
}
}
答案 0 :(得分:3)
在插入数据而不选择任何数据时,根本不需要bind_result
。
但是你应该使用预备语句的核心功能。即:将变量安全地传递给语句对象,而不是将其“原始”值插入SQL字符串中:
$sql = "INSERT INTO folders (folder_name,folder_class,folder_link) VALUES (?,?,?)";
$stmt = $this->connect->prepare($sql);
$stmt->bind_param("sss", $foldName, $foldClass, $foldLink);
$stmt->execute();
(我还没有测试过。)
答案 1 :(得分:2)
请查看本手册页上的第一个示例:http://php.net/manual/en/mysqli-stmt.bind-param.php
答案 2 :(得分:0)
如果要整理表格的数据,请使用truncate
查询:
TRUNCATE TABLE `table_name`
这会将auto_increment
重置为1,但如果您不想清空整个表格,则可以alter
代替它:
ALTER TABLE `table_name` auto_increment = 1