PHP MySQL选择长度错误
MySQL数据库包含11000多行和3个指定列:价格、UPC代码和描述。在同一台机器上运行LAMP(ubuntu18.04),我使用PHP获取页面加载时数据库的每一列,并将其回送到javascript数组中,然后由用户在文本框中搜索。唯一的问题是,我的查询只允许我选择644个项目,然后才加载任何内容。这是一个问题,因为没有显示10356+行PHP MySQL选择长度错误,php,mysql,ubuntu,lamp,Php,Mysql,Ubuntu,Lamp,MySQL数据库包含11000多行和3个指定列:价格、UPC代码和描述。在同一台机器上运行LAMP(ubuntu18.04),我使用PHP获取页面加载时数据库的每一列,并将其回送到javascript数组中,然后由用户在文本框中搜索。唯一的问题是,我的查询只允许我选择644个项目,然后才加载任何内容。这是一个问题,因为没有显示10356+行 php文件: <?php session_start(); $conn = new mysqli($servername, $user
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";
?>
与
*0是“说明”的正确行。is不是抛出相同的输出,而是用null填充一个小(20-30行)数组:
pds_descs=[null,null,null,…]pds_代码=[“代码1”、“代码2”等]
pds_价格=[“价格1”、“价格2”等]
如何修复将完整的11000+数据库加载到js中的阵列中,以消除644限制?我读过关于使用Ajax搜索客户机-->服务器而不是在加载时将数据库侧向加载到客户机的文章,但从未使用过它,感觉这仍然是一个值得探索的途径。我也读过关于将内存增加到MySQL/PHP的文章,但经过大量努力和修改PHP.ini和my.cnf后,仍然没有发生任何事情。错误是条目645包含非ASCII字母,这破坏了json_encode();陈述 为了解决这个问题,我在MYSQL中运行了一个查询:
SELECT *
FROM sys.pds
WHERE Description <> CONVERT(Description USING ASCII);
选择*
从sys.pds
其中描述转换(使用ASCII的描述);
这带来了一个不符合ASCII的条目列表(我有8个条目),我修改了元素普通字母数字字符并应用了该列表。刷新chrome网页后,可以加载所有11745行
json_encode($pds_desc)代码>返回false。在运行json\u encode
函数之前,尝试检查数组,看看错误在哪里。我猜您有一个无效字符,如$str=“\xF0”;json_编码([$str])
将返回false;所有内容都通过回声打印($pds\u desc)显示然后是$sqlDesc=json\u encode($pds\u desc)代码>?您已从sys.pds limit 644 limits选择*到644条记录,它不会选择超出该限制的任何内容。如果要选择所有记录,请删除限制644。@FelippeDuarte显示错误打印session_start():无法发送session cache limiter-第[]行上已发送的标题(输出在[]中[]开始)
$pds_desc[] = $row[0];
SELECT *
FROM sys.pds
WHERE Description <> CONVERT(Description USING ASCII);