PHP mysql_fetch_array返回第一个成员


PHP mysql_fetch_array return first member

我有以下代码:

$url = @mysql_fetch_array(mysql_query("SELECT url FROM dl LIMIT 1"));
$url = $url[0];

但我宁愿用它作为:

$url = @mysql_fetch_array(mysql_query("SELECT url FROM dl LIMIT 1"))[0];

为什么第二个错误是因为我觉得语法正确?还是我错过了什么?

PHP Parse error: syntax error, unexpected '[' in settings.php on line 52

首先是

$url = @mysql_fetch_array(mysql_query("SELECT url FROM dl LIMIT 1"))[0];

不是有效的php语法(*):php版本<=中不支持数组取消引用5.3(*)

从PHP 5.4开始,可以直接对函数或方法调用的结果进行数组解引用。以前只能使用临时变量。

从PHP 5.5开始,可以对数组文字进行数组解引用。

Example #7 Array dereferencing
<?php
function getArray() {
    return array(1, 2, 3);
}
// on PHP 5.4
$secondElement = getArray()[1];
// previously
$tmp = getArray();
$secondElement = $tmp[1];
// or
list(, $secondElement) = getArray();
?>

其次,不要使用mysql_*,因为这些函数已被弃用(请使用mysqli_*PDO

如果提取单行,则使用

mysql_fetch_row 

而不是

mysql_fetch_array

如果你换成mysqli或pdo会更好。您试图获取数组值的方式在php 中是错误的

从PHP 5.5.0开始,不赞成使用mysql函数,并且很快将从PHP包中删除。最好使用MySQLiPDO来感到安全
有关此主题的更多信息,请参阅:mysqli或PDO-优缺点是什么?

不管怎样。在这种情况下,你可以使用mysql_result,有三个参数:

结果:来自mysql_query() 的资源

:行数,从0开始。

字段:字段的名称,或结果集中该字段的索引。

$url = @mysql_result(mysql_query("SELECT url FROM dl LIMIT 1"), 0, 'url');