Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 编写准备好的语句以将数据从表单插入表中(致命错误)_Php_Mysqli_Prepared Statement - Fatal编程技术网

Php 编写准备好的语句以将数据从表单插入表中(致命错误)

Php 编写准备好的语句以将数据从表单插入表中(致命错误),php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,使用prepared语句和mysqli,我试图将下面的数据插入表中。当我运行代码时,即使我正在学习w3school的教程,也会出现这个错误 这是我的密码: $dbServerName = "localhost"; $dbUserName = "root"; $dbPassword = ""; $dbName = "candiadateDB"; $conn = mysqli_connect($dbServerName,$dbUserName,$dbPassword,

使用prepared语句和mysqli,我试图将下面的数据插入表中。当我运行代码时,即使我正在学习w3school的教程,也会出现这个错误

这是我的密码:

$dbServerName = "localhost";
    $dbUserName = "root";
    $dbPassword = "";
    $dbName = "candiadateDB";
    $conn = mysqli_connect($dbServerName,$dbUserName,$dbPassword,$dbName);
    $stmt_values = $conn->prepare("INSERT INTO candidates (username, firstname, lastname, password, coalition,program, starting_year, slogan, email) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
                                $stmt_values->bind_param("sssssssss",$username, $firstname, $lastname, $password, $coalition,$program, $starting_year, $slogan, $email);
                                $stmt_values->execute();
                                $stmt_values->close();
                                $conn->close();
我正在检索变量$username,$fname,。。从一个表格中可以看出:

$fname = mysqli_real_escape_string($conn,$_POST['fname']);
以下是错误:
致命错误:对

中的非对象调用成员函数bind_param()时,bind_param不接受非变量作为参数

它们必须是变量。例如,将meee存储为
$meee='meee'

请参阅手册:

例如:

$value1 = 'mee';
$value2 = 'youu';
.
.
.
$stmt->bind_param("ss",$value1,$value2);

请参阅绑定参数的要点是不允许在查询中使用无效/不安全的数据。您正在对字符串/参数进行硬编码,因此在本例中,没有理由使用预先准备好的语句,因为您可以对插入X(col1,col2)值('val1',val2')执行相同的操作。绑定参数不接受非变量作为参数

它们必须是变量。例如,将meee存储为
$meee='meee'

请参阅手册:

例如:

$value1 = 'mee';
$value2 = 'youu';
.
.
.
$stmt->bind_param("ss",$value1,$value2);

请参阅绑定参数的要点是不允许在查询中使用无效/不安全的数据。您正在对字符串/参数进行硬编码,因此在本例中,没有理由使用预先准备好的语句,因为您可以使用
插入X(col1,col2)值('val1',val2')

从不存储纯文本密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用
密码\u hash()
。在散列之前,不需要对它们执行任何操作或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。你需要养成这样的习惯,它可以帮助你解决问题。您将获得积分,并鼓励其他人帮助您。请不要报告问题:永远不要存储纯文本密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用
密码\u hash()
。在散列之前,不需要对它们执行任何操作或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。你需要养成这样的习惯,它可以帮助你解决问题。您将获得积分,并鼓励其他人帮助您。请不要报告问题:谢谢您的回答,现在我遇到了另一个错误。我从一个类似so$value1=mysqli\u real\u escape\u string($conn,$\u POST['value1')的表单中获取值;当我运行代码时,我得到了这个错误:致命错误:调用非对象上的成员函数bind_param(),您不需要使用转义字符串转义它们。摆脱它。检查你是否也在连接,并且$conn的连接顺序正确。我这样做是$fname=$\u POST['fname'];我仍然得到了这个错误:致命错误:调用非对象上的成员函数bind_param(),您是否验证了数据库连接成功?是的,数据库正常谢谢您的回答,现在我得到了另一个错误。我从一个类似so$value1=mysqli\u real\u escape\u string($conn,$\u POST['value1')的表单中获取值;当我运行代码时,我得到了这个错误:致命错误:调用非对象上的成员函数bind_param(),您不需要使用转义字符串转义它们。摆脱它。检查你是否也在连接,并且$conn的连接顺序正确。我这样做是$fname=$\u POST['fname'];我仍然得到这个错误:致命错误:对非对象调用成员函数bind_param(),您是否验证了您的数据库连接成功?是的,数据库正常