猿问

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

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

论坛应用程序中有更多文件,但我猜不会需要它们。


慕尼黑8549860
浏览 120回答 1
1回答

料青山看我应如是

将函数调用放在字符串中是行不通的。您需要在字符串外部调用该函数,然后将其连接起来。'另外,您在函数调用之后错过了。$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);
随时随地看视频慕课网APP
我要回答