为了账号安全,请及时绑定邮箱和手机立即绑定

将 SQL 查询定义为变量时出现意外的 E0F

将 SQL 查询定义为变量时出现意外的 E0F

PHP
慕尼黑8549860 2022-12-11 17:14:26
unexpected EOF我正在为一个小型论坛编写代码,并且在将 SQL 查询设置为 PHP 变量的 PHP 代码中不断遇到错误。我希望代码不会出现该错误,并在存储在 MySQL 数据库中的论坛应用程序中显示类别名称和描述。我尝试在 Internet 上的其他地方查找 MySQL 和 PHP 手册,但无济于事。在我看来,直到我开始$_GET['id']在mysqli_real_escape_string($connected, $_GET['id'])第 7 行中输入category.php任何POST带有create_cat.php. 这很可能不仅仅是我的 IDE,因为它会在程序运行时显示在我的错误日志中。我的代码如下所示。这只是整个文件的一小部分,但足以重现错误。类别.php:        //do a query for the topics        $sql = "SELECT                      topic_id,                    topic_subject,                    topic_date,                    topic_cat                FROM                    topics                WHERE                    topic_cat = " . mysqli_real_escape_string($_GET['id']);        $result = mysqli_query($sql);论坛应用程序中有更多文件,但我猜不会需要它们。
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

将函数调用放在字符串中是行不通的。您需要在字符串外部调用该函数,然后将其连接起来。


'另外,您在函数调用之后错过了。


$sql = "SELECT cat_id, cat_name, cat_description FROM categories WHERE cat_id = '" . mysqli_real_escape_string($connected, $_GET['id']) . "'";

但是,您真的应该学习使用准备好的语句。


$sql = "SELECT cat_id, cat_name, cat_description FROM categories WHERE cat_id = ?";

$stmt = $connected->prepare($sql);

$stmt->bind_param("s", $_GET['id']);

$stmt->execute();

$result = $stmt->get_result();

如果出于某种原因您更喜欢过程语法:


$sql = "SELECT cat_id, cat_name, cat_description FROM categories WHERE cat_id = ?";

$stmt = mysqli_prepare($connected, $sql);

mysqli_stmt_bind_param($stmt, "s", $_GET['id']);

mysqli_stmt_execute($stmt);

$result = mysqli_stmt_get_result($stmt);


查看完整回答
反对 回复 2022-12-11
  • 1 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信