Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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 mysqli行时的奇怪行为_Php_Arrays_Mysqli - Fatal编程技术网

使用PHP mysqli行时的奇怪行为

使用PHP mysqli行时的奇怪行为,php,arrays,mysqli,Php,Arrays,Mysqli,我目前正在将一个PHP脚本从5.4版的PHP服务器翻译成5.3版的PHP服务器 我立即注意到我们的登录脚本中有一种异常行为 在分析了一下脚本之后,我找到了问题的根源 调用$result->fetch\u行中第一行的成员时失败 $result的声明如下所示: $username = $mysqli->real_escape_string(strtolower($_POST["USERNAME"])); $password = $mysqli->real_escape_string(md

我目前正在将一个PHP脚本从5.4版的PHP服务器翻译成5.3版的PHP服务器

我立即注意到我们的登录脚本中有一种异常行为

在分析了一下脚本之后,我找到了问题的根源

调用$result->fetch\u行中第一行的成员时失败

$result的声明如下所示:

$username = $mysqli->real_escape_string(strtolower($_POST["USERNAME"]));
$password = $mysqli->real_escape_string(md5(strtolower($_POST["PASSWORD"])));

$result = $mysqli->query("SELECT * FROM $table WHERE username='$username' AND password='$password'");
然而,出于本能,我检查了我是否正确地调用了data_seek;我有

打印出fetch_row()函数得到了以下结果

阵列([0]=>3[1]=>admin[2]=>d76362b0f640fbcf869033b5e4d1c4bf[3]=>Mr[4]=>Rasmus[5]=>4[6]=>7]=>0)

因此,阵列工作正常

但是下面的声明没有起作用

$Title=$result->fetch_row()[3]

因此,我尝试将整行存储在单个数组对象中,然后分别调用所有子成员

像这样:

$row = $result->fetch_row();
$Title = $row[3];
它工作得很好

为什么?此声明有什么问题:

$Title=$result->fetch_row()[3]


您说过您正在将脚本从PHP5.4转换为PHP5.3。显然你忘了那句话是因为

$Title = $result->fetch_row()[3];
不是有效的PHP5.3。您应该会在读取以下内容时出错:

分析错误:语法错误,在


您说过要将脚本从PHP5.4翻译成PHP5.3。显然您忘记了这一行,因为

$Title = $result->fetch_row()[3];
无效的PHP 5.3。读取时应出现错误:

分析错误:语法错误,在

如您在PHP.net的

functionname()[1]
是PHP5.4中添加的内容。

如您在PHP.net的


functionname()[1]
是PHP5.4中添加的内容。

在PHP5.3和更高版本中不可能直接取消函数调用的结果,但在PHP5.4中,可以直接取消函数调用的结果

在PHP5.3和更高版本中不可能直接取消函数调用的结果,但在PHP5.4中,可以取消函数调用的结果

PHP5.4引入了直接从调用方法引用返回数组元素的能力,这就是为什么它在5.3中不起作用的原因

从示例7开始

从PHP5.4开始,可以对 函数或方法直接调用。以前只能使用 临时变量


因此,您的临时解决方案看起来将成为一个长期解决方案:)

PHP 5.4引入了直接从调用方法引用返回数组元素的功能,这就是为什么它在5.3中不起作用的原因

从示例7开始

从PHP5.4开始,可以对 函数或方法直接调用。以前只能使用 临时变量


因此,您的临时解决方案看起来将成为一个长期解决方案:)

哪条语句错误?抱歉,这是一个糟糕的公式。刚刚更正。哪条语句错误?抱歉,这是一个糟糕的公式。刚刚更正。先生,您是对的。我刚开始编写PHP脚本,而我以前是用C#编程的。这是第一次用PHP5.3编写-我很抱歉遇到麻烦。一点也不麻烦。这样的问题并不少见。如果我找到了,我会提供一个到变更日志的链接。先生,你是对的。我刚开始编写PHP脚本,而我以前是用C#编写的。这是第一次用PHP5.3编写-我很抱歉遇到麻烦。一点也不麻烦。这样的pr问题并不少见。如果我找到一个变更日志,我会提供一个链接。