我有以下代码:
$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
错误是什么?
答案 0 :(得分:2)
您为错误的内容创建了别名。这应该有效:
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);
答案 1 :(得分:2)
$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-column,只有count(*)列。
N.B。:您使用的是MySQL保留字,match
,需要特别注意MySQL。要么将其重命名为其他内容,要么使用它周围的刻度,以便正确地逃避它。