首页 > 解决方案 > 尝试在 PHP/MySQL 中使用 Prepared 语句时出现多个错误

问题描述

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

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();

标签: phpmysql

解决方案


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

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

  1. 您使用 SELECT 插入数据。它应该是插入。
  2. students桌子后面有一个额外的括号。
  3. 总参数与一个不匹配bind_param? 当您要存储 8 个变量时,您的代码中有 7 个。

改成这段代码

$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);

我不再进一步解释这段代码,因为它已经在评论中讨论过了。


推荐阅读