我有以下代码:
$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
答案 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
包中删除它。最好使用MySQLi
或PDO
感到安全...
有关此主题的更多信息,请参阅: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');