php - 尝试在 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();
解决方案
$stmt = $connect->prepare("SELECT * FROM students) VALUES (?, ?, ?, ?, ?,?, ?)");
上面的代码是你所有问题的根源。
- 您使用 SELECT 插入数据。它应该是插入。
students
桌子后面有一个额外的括号。- 总参数与一个不匹配
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);
我不再进一步解释这段代码,因为它已经在评论中讨论过了。
推荐阅读
- python - 如何在 pandas 中使用 .at 方法返回特定的数据类型?
- css - 在 React 中添加 CSS 文件
- java - 排序不维护插入顺序的HashMap?
- javascript - 如何使用 axios 将返回值保存到带有 async/await 的变量中?
- android - 为什么模拟器上看不到编辑文本、密码框和登录按钮
- amazon-cloudfront - 无服务器框架 - 具有 S3 源和多种行为的 AWS CloudFront
- python - 电子邮件在收件人和抄送中不显示收件人
- angular - 数组的角度数组
- c++ - 具有指针数据成员的类对象向量
- python - 在多个条件下加速 pandas .loc 操作