我有以下代码:
$sql = 'select count(*) from match as count where match_status != :status';
$query = $con->prepare($sql);
$query->bindValue(':status',LOST,PDO::PARAM_INT);
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
if(!empty($row))
$row_count = $row['count'];
else
$row_count = 0;
我越来越Notice: Undefined index: count
有什么错误?
您为错误的内容创建了别名。这应该有效:
SELECT count(*) as count FROM `match` WHERE match_status != :status
//^^^^^ Alias for 'count(*)' NOT for your table name
此外,您还必须在关键字/Mysql保留字周围放置' 例如 match
: http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html
如果您打开错误模式,那么您也会收到一个错误,只需将其放在连接后即可:
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'select count(*) from match as count where match_status != :status';
在此查询中,as count
不会执行任何操作,因为您不知道要重命名哪一列。
您需要将其直接放在原始列名之后,以便数据库知道需要隐藏的列名:
$sql = 'select count(*) as count from `match` where `match_status` != :status';
因此$row['count']
不起作用,因为您没有计数列,只有 count(*) 列。
注意:你使用的是MySQL保留字,match
,在MySQL中需要特别注意。要么将其重命名为其他名称,要么在其周围使用勾号,以便正确转义它。