请帮助我,我有一个考试明天(html,php,使用mysql)和尝试一个评论员我不断得到这个错误

2hh7jdfx  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(311)

这个问题在这里已经有答案了

php解析/语法错误;以及如何解决这些问题(18个答案)
两年前关门了。
请帮助我,我有一个考试明天(html,php,使用mysql)和尝试一个评论员我不断得到这个错误
( ! ) 分析错误:语法错误,第18行的d:\wamp\www\final\u exam\roomreserved.php中出现意外“”(t\u encapsed\u和\u whitespace),需要标识符(t\u string)或变量(t\u variable)或数字(t\u num\u string)
这是18号线上的

mysqli_query($con, "insert into Reservation values ('$CN['CNO']', CURDATE(), '$RoomCode', '$NoR', '$RC['RoomDesc']')")
ao218c7q

ao218c7q1#

这里的问题是,您没有在字符串中转义php变量;

mysqli_query($con, "insert into Reservation values ('{$CN['CNO']}', CURDATE(), '$RoomCode', '$NoR', '{$RC['RoomDesc']}')");

现在的情况是,数组和查询都有单引号,因此在变量周围使用大括号将“转义”
在数组和查询中使用单引号会使它认为字符串比预期的多
您也可以用其他方法来实现这一点,下面是一个在所有变量周围使用大括号的示例,其中变量分别“连接”到查询字符串;

mysqli_query($con, "insert into Reservation values ('{$CN['CNO']}', CURDATE(), '{$RoomCode}', '{$NoR}', '{$RC['RoomDesc']}')");
mysqli_query($con, "insert into Reservation values ('" . $CN['CNO'] . "', CURDATE(), '" . $RoomCode . "', '" . $NoR . "', '" . $RC['RoomDesc'] . "')");

有一件事也要考虑到-这个用户是恶意的吗?查看函数,例如 addslashes 或者 mysqli_real_escape_string 为了帮助您对抗sql注入-这两个都是“可接受的”,但不是最好的,请查看准备好的语句,因为它们是防止sql注入的最佳选择(cd001在您的问题的评论中提供了最好的资源)

相关问题