将 SQL 查询定义为变量时出现意外的 E0F
Unexpected E0F When Defining an SQL Query as a Variable
我正在为一个小型论坛编写代码,并且在我将 SQL 查询设置为 PHP 变量的 PHP 代码中不断遇到 unexpected EOF
错误。我希望代码不会出现该错误,并在存储在 MySQL 数据库中的论坛应用程序中显示类别名称和描述。我尝试在互联网上的其他地方和 MySQL 和 PHP 手册中查找,但无济于事。
在我看来,语法是正确的,直到我开始在 category.php
的第 7 行的 mysqli_real_escape_string($connected, $_GET['id'])
中输入 $_GET['id']
以及任何使用 POST
方法的内容在 create_cat.php
。这很可能不仅仅是我的 IDE,因为当程序为 运行 时它会出现在我的错误日志中。我的代码如下所示。这只是整个文件的一小部分,但足以重现错误。
category.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);
论坛应用程序中还有更多文件,但我猜不会需要它们。
将函数调用放在字符串中是行不通的。需要在字符串外调用函数,然后拼接。
此外,您在函数调用后遗漏了 '
。
$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);
我正在为一个小型论坛编写代码,并且在我将 SQL 查询设置为 PHP 变量的 PHP 代码中不断遇到 unexpected EOF
错误。我希望代码不会出现该错误,并在存储在 MySQL 数据库中的论坛应用程序中显示类别名称和描述。我尝试在互联网上的其他地方和 MySQL 和 PHP 手册中查找,但无济于事。
在我看来,语法是正确的,直到我开始在 category.php
的第 7 行的 mysqli_real_escape_string($connected, $_GET['id'])
中输入 $_GET['id']
以及任何使用 POST
方法的内容在 create_cat.php
。这很可能不仅仅是我的 IDE,因为当程序为 运行 时它会出现在我的错误日志中。我的代码如下所示。这只是整个文件的一小部分,但足以重现错误。
category.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);
论坛应用程序中还有更多文件,但我猜不会需要它们。
将函数调用放在字符串中是行不通的。需要在字符串外调用函数,然后拼接。
此外,您在函数调用后遗漏了 '
。
$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);