我正在创建一个类,并且我有一个函数,通过它我想从一些输入中将一些数据插入到表中。如果我检查了表,但是一直收到错误消息"number of arguments in prepare in match the no of arg in bind_result“,它就会起作用。我也不知道我的方法是否正确。
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);
}
}发布于 2011-12-14 16:56:00
您根本不需要bind_result,因为您正在插入数据,并且没有选择任何数据。
但您应该使用已准备好的语句的核心功能。也就是说:安全地将变量传递给statement对象,而不是将它们的“原始”值插入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();(我还没有测试过它。)
发布于 2011-12-14 16:58:44
请看本手册页面上的第一个示例:http://php.net/manual/en/mysqli-stmt.bind-param.php
发布于 2011-12-14 17:31:35
如果要将表的数据作为一个整体清空,请使用truncate查询:
TRUNCATE TABLE `table_name`这会将auto_increment重置为1,但是如果您不想清空整个表,您可以改为alter它:
ALTER TABLE `table_name` auto_increment = 1https://stackoverflow.com/questions/8501651
复制相似问题