繁体   English   中英

将数据插入MySql DB

[英]Insert data into MySql DB

我正在创建一个类,并且具有一个函数,希望通过该函数将一些数据从某些输入插入表中。 如果我检查表,但仍然出现错误“ 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_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();

(我尚未测试过。)

请看本手册页上的第一个示例: http : //php.net/manual/en/mysqli-stmt.bind-param.php

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

TRUNCATE TABLE `table_name`

这会将auto_increment重置为1,但是如果您不想清空整个表,可以改为alter它:

ALTER TABLE `table_name` auto_increment = 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM