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

时间:2017-07-07 18:51:42

标签: php mysqli prepared-statement

使用预处理语句和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()

1 个答案:

答案 0 :(得分:3)

bind_param不接受非变量作为参数

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

请参阅手册:http://php.net/manual/en/mysqli-stmt.bind-param.php

示例:

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

查看绑定点参数是不允许在查询中使用无效/不安全数据。您正在硬编码字符串/参数,所以在这种情况下,没有理由使用准备好的语句,因为您可以对INSERT INTO X (col1,col2) VALUES ('val1',val2')执行相同操作。