Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL选择长度错误_Php_Mysql_Ubuntu_Lamp - Fatal编程技术网

PHP MySQL选择长度错误

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

MySQL数据库包含11000多行和3个指定列:价格、UPC代码和描述。在同一台机器上运行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";

?>

*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);