php-mysql_query在phpmyadmin中工作时,某些列的结果为空


Blank result for some columns when php mysql_query, works in phpmyadmin

我遇到了一个让我有点疯狂的问题。我已经将一些csv数据导入到我的phpadmin数据库中的一个表中,现在使用带有mysql_query()的php脚本在数据库上运行一个简单的选择查询,并将结果转换为json格式,例如SELECT clients FROM TABLE 29

基本上,表中的一些列在通过mysql_query()传递后会产生json字符串,但其他列只是返回一个空白。我已经摆弄了几个小时,不明白为什么会这样。我的代码的最后一部分看起来是这样的:

$myquery = "SELECT `clients` FROM `TABLE 29`";
$query = mysql_query($myquery) or die(mysql_error());
if ( ! $query ) {
    echo mysql_error();
    die;
}
$data = array();
for ($x = 0; $x < mysql_num_rows($query); $x++) {
    $data[] = mysql_fetch_assoc($query);
}
echo json_encode($data);     
mysql_close($server);

如有任何帮助,我们将不胜感激。可能是关于表中的数据吗?我不知所措。

谢谢!

UPDATE:列clients中字符串的长度似乎有影响。当我用更短的东西(例如aaa而不是company name 111 - 045 - project name - currency - etc)替换所有文本时,它就起作用了。然而,我需要它能够处理长字符串,因为我希望它只接受用户碰巧导入到其中的任何内容…我做错了什么?

不,这与表无关,而是关于如何循环它们。示例:

$data = array();
while($row = mysql_fetch_assoc($query)) { // While a row of data exists, put that row in $row as an associative array
    $data[] = $row;
}
echo json_encode($data);
mysql_close($server);
exit;

注意:mysql已解除反应,不再维护。使用mysql扩展的改进版本mysqli或者使用PDO。

在检查了所有数据行后,我发现问题的根源是一个"é"-是的,一个带有重音的"e"。一旦我把它换成一个普通的"e",问题就消失了。这么小的东西浪费了这么多时间:(