我有以下MySQL代码:
SELECT COUNT(*) as Results,
(SELECT COUNT(*) FROM tresults WHERE q61 = 'Marketing') AS q1,
(SELECT COUNT(*) FROM tresults WHERE q61 = 'Account’s') AS q2,
(SELECT COUNT(*) FROM tresults WHERE q61 = 'Capital') AS q3,
FROM tresults
其输出(在MySQL中)如下:
Results q1 Q2 Q3
1327 12 6 8
然后我使用以下PHP代码将此信息放在数组中:
$result = $mysqli->query($query);
while($row = $result->fetch_assoc()){
$department = $row;
}
奇怪的是当我在var_dump或print_r $ department时输出如下:
Array ( [Results] => 1327 [q1] => 12 [q2] => 0 [q3] => 8 )
正如你所看到的,如果我只是在MySQL中运行查询,那么q2 = 6,而当它运行输出并传递给PHP中的数组然后q2 = 0?!?!?!?!
现在,我想知道它是否与撇号('Account **'** s')有关,你可以看到它不是普通的/普通的撇号。
这可能导致问题,还是我的PHP代码将SQL结果放入数组?
任何和所有帮助表示赞赏。
答案 0 :(得分:1)
你是否在没有while
的情况下尝试过?我还会消除q1的重复(将AS q1
更改为AS q1Count
。IMO使用与现有列名匹配的COUNT别名是不好的做法。
如果这不起作用,我会开始考虑编码不匹配。需要考虑两件事:
$query = $mysqli->query("SELECT COUNT(*) AS q1Count FROM results WHERE q1 = 'People’s'")
$result = $query->fetch_assoc();
$count = $result['q1Count'];
确定MySQL表编码:SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA
和SHOW TABLE STATUS
设置PHP MySQLi编码:$mysqli->set_charset("encoding here")
答案 1 :(得分:0)
尝试运行此查询,看看它是否符合您的要求。
$sql = "SELECT COUNT(*) FROM tresults WHERE q61 = 'Account’s'"
$mysqli->set_charset("utf8");
$query = $mysqli->query($sql)
header('Content-type: text/html; charset=utf-8');
while($row = $query->fetch_assoc()){
$department = $row;
}