尝试在PHP / MySQL中使用Prepared语句时遇到多个错误

时间:2018-08-15 02:59:56

标签: php mysql

我正在尝试将准备好的语句用作最佳实践,但我不断遇到这些错误。

1)您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在')VALUES(?,?,?,?,?,?,?,?,?,?)'附近使用正确的语法

2)未定义索引:C:\ wamp64中的finalExamGrade(适用于所有超全局变量)

3)致命错误:在C:\ wamp64 \

中的布尔值上调用成员函数bind_param()

任何修复程序?想法?

PHP / MySQL

 require_once("DBCONNECT.php");
    $id = $_REQUEST['studentID'];
    $last = $_REQUEST['lastName'];
    $first = $_REQUEST['firstName'];
    $grade1 = $_REQUEST['test1Grade'];
    $grade2 = $_REQUEST['test2Grade'];
    $grade3 = $_REQUEST['test3Grade'];
    $grade4 = $_REQUEST['test4Grade'];
    $final = $_REQUEST['finalExamGrade'];


    $stmt = $connect->prepare("SELECT * FROM students) VALUES (?, ?, ?, ?, ?,?, ?)");
    $stmt->bind_param("issiiiii", $id, $last, $first, $grade1, $grade2, $grade3, $grade4, $final);

    $stmt->execute();

    var_dump($id, $last, $first, $grade1, $grade2, $grade3, $grade4, $final);

    $stmt->close();
    $connect->close();

1 个答案:

答案 0 :(得分:1)

$stmt = $connect->prepare("SELECT * FROM students) VALUES (?, ?, ?, ?, ?,?, ?)");

上面的代码是所有问题的根源。

  1. 您使用SELECT插入数据。应该是INSERT。
  2. students表后还有一个括号。
  3. 总参数与bind_param不匹配。有7 ? 要在代码中存储8个变量时。

更改为该代码

$stmt = $connect->prepare("INSERT INTO students(col1, col2, col3, col4, col5, col6, col7, col8) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("issiiiii", $id, $last, $first, $grade1, $grade2, $grade3, $grade4, $final);

由于对此代码进行了讨论,因此我不再进一步解释该代码。