SQL返回一个值,但它不会出现在数组中

时间:2014-09-08 12:53:46

标签: php sql arrays apostrophe

我有以下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结果放入数组?

任何和所有帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

你是否在没有while的情况下尝试过?我还会消除q1的重复(将AS q1更改为AS q1Count。IMO使用与现有列名匹配的COUNT别名是不好的做法。

如果这不起作用,我会开始考虑编码不匹配。需要考虑两件事:

  1. MySQL使用的编码是什么?
  2. PHP的MySQLi使用的编码是什么?
  3. $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.SCHEMATASHOW 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;
}