PHP MySQL 选择长度错误

标签 php mysql ubuntu lamp

MySQL 数据库包含 11,000 多行和 3 个分配的列:价格、UPC 代码和描述。在同一台机器(Ubuntu 18.04)上运行 LAMP,我使用 PHP 在页面加载时获取数据库的每一列,并将其回显到 javascript 数组中,然后用户在文本框中搜索这些数组。唯一的问题是我的查询只允许我选择 644 个项目,然后才加载任何内容。这是一个问题,因为没有显示 10,356 多行。

php文件:

<?php
        session_start();
$conn = new mysqli($servername, $username, $password, $dbname);
    $sql = "SELECT * FROM sys.pds limit 644;";
    $result = $conn->query($sql);
    if (!$result) {
    printf("Errormessage: %s\n", mysqli_error($conn));
    }
    if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
    $pds_code[] =  $row["Code"];
    $pds_desc[] =  $row['Description'];
    $pds_prce[] =  $row["Price"];
    }
}
$sqlDesc = json_encode($pds_desc);
$sqlPrice = json_encode($pds_prce);
$sqlCode = json_encode($pds_code);
echo "pds_descs = ". $sqlDesc . ";\n";
echo "pds_codes = ". $sqlCode . ";\n";
echo "pds_Prices = ". $sqlPrice . ";\n";

?>

返回(从 Chrome 控制台):

pds_descs = ["desc1","desc2","etc..."];
pds_codes = ["code1","code2","etc..."];
pds_Prices = ["price1","price2","etc..."];

当限制设置为 645(或移除)时,数组变为:

pds_descs = ; <--What triggers the error in the console
pds_codes = ["code1","code2","etc..."];
pds_Prices = ["price1","price2","etc..."];

它变得更有趣了 因为“描述”列是唯一没有收到任何东西的列,我尝试用数字而不是名称来引用该列,替换

$pds_desc[] =  $row['Description'];

$pds_desc[] =  $row[0];

*0 是“描述”的正确行。不是抛出相同的输出,而是填充一个用 null 填充的小数组(20-30 行):

pds_descs = [null,null,null,...];
pds_codes = ["code1","code2","etc..."];
pds_Prices = ["price1","price2","etc..."];

我如何修复以在 js 中将完整的 11,000+ 数据库加载到其数组中以消除 644 的限制?我读过有关使用 Ajax 搜索客户端--> 服务器而不是在加载时将数据库旁加载到客户端的信息,但我从未使用过它,感觉这仍然是一个值得探索的途径。我还阅读了有关增加 MySQL/PHP 内存的信息,但经过大量努力并修改 php.ini 和 my.cnf 仍然没有任何反应。

最佳答案

错误是条目 645 包含破坏 json_encode() 的非 ASCII 字母;陈述。 为了解决这个问题,我在 MYSQL 中运行了一个查询:

SELECT *
FROM sys.pds 
WHERE Description <> CONVERT(Description USING ASCII);

这带来了一个不符合 ASCII 的条目列表(我有 8 个条目),我修改了元素普通字母数字字符并应用了这些条目。刷新 chrome 网页后,所有 11,745 行都可以加载!

关于PHP MySQL 选择长度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51792074/

相关文章:

c++ - 如何在C++中获得Antlr 4规则名称?

ubuntu - ubuntu 服务器上的鱿鱼在特定时间段内停止为特定网站工作

php - 如何在 PHP 中取消设置 session 数组

java - 是否有任何可以与 PHP/Python/其他集成的沙盒脚本引擎?

php - fatal error : Call to a member function . ..在字符串上

c++ - 编译错误 : undefined reference to‘__atomic_fetch_add_4’

ubuntu - 无法使用 Ubuntu16.04 和 anaconda 安装 gensim

php - 代码点火器 : Unable to locate a model?

php - 如何在 Laravel 5 中重新生成 APP_KEY 并设置新密码

mysql - 如何将大文件加载到 MySQL 中的表中