php mysql选择长度错误

p5fdfcr1  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(332)

一个mysql数据库包含11000多行和3个指定列:prices、upc code和descriptions。在同一台机器上运行lamp(ubuntu18.04),我使用php获取页面加载时数据库的每一列,并将其回送到javascript数组中,然后用户在文本框中搜索这些数组。唯一的问题是,我的查询只允许我选择644项,然后它就什么也不加载了。这是一个问题,因为没有显示10356+行。
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_代码=[“代码1”,“代码2”,“等…”];
pds\U价格=[“价格1”,“价格2”,“等…”];
当限制设置为645(或删除)时,阵列将变为:
pds_descs=<--是什么触发了控制台中的错误
pds_代码=[“代码1”,“代码2”,“等…”];
pds\U价格=[“价格1”,“价格2”,“等…”];
它变得更有趣,因为“description”列是唯一一个没有接收任何内容的列,我尝试用数字而不是名称引用该列,替换为

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

具有

$pds_desc[] =  $row[0];
  • 0是“说明”的正确行。不是抛出相同的输出,而是用null填充一个小的(20-30行)数组:

pds_descs=[空,空,空,…];
pds_代码=[“代码1”,“代码2”,“等…”];
pds\U价格=[“价格1”,“价格2”,“等…”];
如何修复将完整的11000+数据库加载到js中的数组中以消除644限制?我读过关于使用ajax搜索客户机-->服务器,而不是在加载时将数据库侧向加载到客户机的内容,但从未使用过,我觉得这仍然是一个值得探索的途径。我也读过关于增加mysql/php内存的文章,但是经过很多努力和修改php.ini和my.cnf仍然没有发生任何事情。

ycl3bljg

ycl3bljg1#

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

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

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

相关问题