Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将SQL查询定义为变量时出现意外E0F_Php_Mysql_Mysqli - Fatal编程技术网

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

Php 将SQL查询定义为变量时出现意外E0F,php,mysql,mysqli,Php,Mysql,Mysqli,我在编写一个小论坛的代码时,在PHP代码中不断遇到意外的EOF错误,我将SQL查询设置为PHP变量。我希望代码不会出现这种错误,并在MySQL数据库中存储的论坛应用程序中显示类别名称和描述。我试着在互联网上的其他地方查找MySQL和PHP手册,但没有结果 在我看来,语法是正确的,直到我开始在mysqli\u real\u escape\u string($connected,$\u GET['id'])中键入category.php第7行的和create\u cat.php中带有POST方法的任

我在编写一个小论坛的代码时,在PHP代码中不断遇到
意外的EOF
错误,我将SQL查询设置为PHP变量。我希望代码不会出现这种错误,并在MySQL数据库中存储的论坛应用程序中显示类别名称和描述。我试着在互联网上的其他地方查找MySQL和PHP手册,但没有结果

在我看来,语法是正确的,直到我开始在
mysqli\u real\u escape\u string($connected,$\u GET['id'])中键入
category.php
第7行的
create\u cat.php
中带有
POST
方法的任何内容。这很可能不仅仅是我的IDE,因为它会在程序运行时显示在我的错误日志中。我的代码如下所示。这是整个文件的一小部分,但足以重现错误

category.php:


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

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

另外,在函数调用之后,您缺少了

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

请以文本而不是图像的形式发布代码。请在问题本身中发布。这些错误来自您的IDE,而不是PHP。通常“意外的EOF”表示您的引号或大括号不平衡。对不起,对于
$stmt=$connected->prepare($sql)中的
$connected
,应该是
$stmt=$connected->bind_param
是否更改为
$stmt
?不管怎样,我都犯了一个错误。当它是
$connected
时,错误是它调用了一个未定义的函数,当它是
PHP时致命错误:未捕获错误:调用null上的成员函数prepare()
$connected
是脚本中保存
mysqli
连接的变量。您有
mysqli\u查询($connected,$sql)
等效函数版本是
mysqli\u stmt\u bind\u param
所有
$stmt->XXX
方法都是等效的tp
mysqli\u stmt\u XXX
函数。
$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);