【问题标题】:Blank result for some columns when php mysql_query, works in phpmyadmin当 php mysql_query 在 phpmyadmin 中工作时,某些列的空白结果
【发布时间】:2014-09-16 01:27:07
【问题描述】:

我遇到了一个让我有点发疯的问题。我已将一些 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);

任何帮助将不胜感激。可能与表中的数据有关吗?我很茫然。

谢谢!

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

【问题讨论】:

    标签: php mysql sql json phpmyadmin


    【解决方案1】:

    不,这不是关于桌子,而是关于你如何循环它们。示例:

    $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。

    【讨论】:

    • 谢谢,但不幸的是,这并不能解决问题。无论我使用哪种循环方法,有些列在 SELECT 语句中起作用,而另一些则不起作用。例如。 Budget 列有效,但 clients 列无效。所以它必须是别的东西。我将研究 mysqli/PDO,但不确定这是否是问题的可能原因。
    • @AndreLing 你真的有一张名为TABLE 29 的表吗? (有空格?)
    • 是的。我只是将其更改为 capacity - 仍然是同样的问题。
    • 我似乎只在将 excel 文件保存为 csv 后导入的表中遇到这个问题......而且它似乎只影响某些列。
    • 也挖掘 utf 和 mysql 内存限制
    【解决方案2】:

    在检查了所有数据行后,我发现问题的根源是一个“é”——是的,一个带有重音符号的“e”。一旦我用常规的'e'替换它,问题就消失了。这么小的事情浪费了这么多时间:(

    【讨论】:

      猜你喜欢
      • 2013-06-05
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多