Php 将数据插入MySql数据库

Php 将数据插入MySql数据库,php,arrays,mysqli,Php,Arrays,Mysqli,我正在创建一个类,我有一个函数,我想用它从一些输入向表中插入一些数据。如果我检查表,它会工作,但我不断得到错误“prepare中的参数数量与bind_result中的arg数量不匹配”。我也不知道我的方法是否正确 private function insertData($foldName,$foldClass,$foldLink) { $sql = "INSERT INTO folders (folder_name,folder_class,folder_link) VALUES ('

我正在创建一个类,我有一个函数,我想用它从一些输入向表中插入一些数据。如果我检查表,它会工作,但我不断得到错误“prepare中的参数数量与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);
        }

}

在插入数据而不选择任何数据时,根本不需要
bind\u 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();

(我没有测试过。)

在插入数据而不选择任何数据时,您根本不需要
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();

(我没有测试过。)

查看本手册页面上的第一个示例:

查看本手册页面上的第一个示例:

如果要清空整个表的数据,请使用
truncate
查询:

TRUNCATE TABLE `table_name`
这会将
自动增量
重置为1,但如果不想清空整个表,可以
更改它:

ALTER TABLE `table_name` auto_increment = 1

如果要清空整个表的数据,请使用
truncate
查询:

TRUNCATE TABLE `table_name`
这会将
自动增量
重置为1,但如果不想清空整个表,可以
更改它:

ALTER TABLE `table_name` auto_increment = 1

insert语句不返回结果集,所以我想说,实际上没有什么可绑定的;只需删除
$stmt->bind_result…
line我认为这是一个关于
mysqli
的问题?它与mysqli相关是的,我刚刚删除了bind_result()。让我测试一下,看看现在发生了什么…insert语句不会返回结果集,所以我想说,实际上没有什么可以绑定的;只需删除
$stmt->bind_result…
line我认为这是一个关于
mysqli
的问题?它与mysqli相关是的,我刚刚删除了bind_result()。让我测试一下,看看现在发生了什么…我刚刚做了,它成功了:)是的,我想让它如果(…准备…)那么我可以看看在这个过程中是否有错误。。。现在索引是5,我指的是文件夹id,我将其设置为自动递增int(11),我是否可以重置它,使其以1开头?@Roland我很高兴它能工作。我跳过了
if
-语句,只是因为在我的示例中很简单。当然,您应该继续使用
if
-语句。关于
auto_increment
-列:您可以删除列
folder_id
,然后直接重新添加它,或者执行类似以下的MySQL语句:
ALTER TABLE folders auto_increment=1
。好的,谢谢。我在phpmyadmin做的。我正在使用XAMPP处理本地服务器。有时我会看到开销80,然后我点击优化它,但为什么会出现这样的结果呢?我刚刚做了,它成功了:)是的,我想让它如果(…准备…),那么我可以看到在这个过程中是否有错误。。。现在索引是5,我指的是文件夹id,我将其设置为自动递增int(11),我是否可以重置它,使其以1开头?@Roland我很高兴它能工作。我跳过了
if
-语句,只是因为在我的示例中很简单。当然,您应该继续使用
if
-语句。关于
auto_increment
-列:您可以删除列
folder_id
,然后直接重新添加它,或者执行类似以下的MySQL语句:
ALTER TABLE folders auto_increment=1
。好的,谢谢。我在phpmyadmin做的。我正在使用XAMPP处理本地服务器。有时我会看到开销80,我会点击来优化它,但为什么会这样呢?我清空它是为了准备用多维数组填充它。在我这么做之前,它必须是空的。我有一个多维数组
$array=array(数组('Name'=>'Somename','Class'=>'Someclass','Link'=>'Somelink'),数组(与另一个相同)我想循环遍历它,获取第二级数组,并将它们存储在db中,与上面讨论的db相同。我是这样想的:。那能行吗?我测试过了,效果很好。谢谢关于truncate的提示:)好吧,我正在清空它以准备用多维数组填充它。在我这么做之前,它必须是空的。我有一个多维数组
$array=array(数组('Name'=>'Somename','Class'=>'Someclass','Link'=>'Somelink'),数组(与另一个相同)我想循环遍历它,获取第二级数组,并将它们存储在db中,与上面讨论的db相同。我是这样想的:。那能行吗?我测试过了,效果很好。感谢您提供有关截断的提示:)