PHP mysql_fetch_array返回第一个成员

时间:2013-11-29 13:11:10

标签: php mysql

我有以下代码:

$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

3 个答案:

答案 0 :(得分:2)

首先

$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

答案 1 :(得分:1)

如果你拿单行而不是使用

mysql_fetch_row 

而不是

mysql_fetch_array
如果你切换到mysqli或pdo会更好。你试图获取数组值的方式在php

中是错误的

答案 2 :(得分:1)

从PHP 5.5.0开始,不推荐使用mysql函数,很快就会从PHP包中删除它。最好使用MySQLiPDO感到安全...
有关此主题的更多信息,请参阅:mysqli or PDO - what are the pros and cons?

反正。在这种情况下,您可以使用mysql_result,其中包含三个参数:

<强>结果: 资源来自mysql_query()

:行数,从0开始。

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

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