gpt4 book ai didi

php - SQL 服务器问题或连接/代码问题?

转载 作者:行者123 更新时间:2023-11-30 22:14:57 24 4
gpt4 key购买 nike

我遇到这个问题已经有一段时间了,想知道是否有人可以提供一些指导?我的 PHP(版本 5.5.35)/MYSQL(版本 5.7)代码在下面但是在搜索解决方案之后我不相信问题在于代码本身,并且可能是 sql server 的问题,虽然我是对此还很陌生,所以不确定具体如何解决。

问题:

一个 PHP/MYSQL 查询(SELECT * FROM 表)返回一个数组,但错过了浏览器中的第一行(除非我先在浏览器中加载 - 见下文)。包括之后的每一行,但总是遗漏第一行。

我已经在线检查了很多次,原因通常是在 PHP 代码中调用“mysqli_fetch_array();”两次。然而,事实并非如此,无论如何也不是问题所在,如下面的一半解决方案所示。

临时解决方案:

我设法缩小了范围并找到了原因(或至少是一个原因)。好像和我使用浏览器和命令行处理请求的方式有关。如果我创建一个 SQL 表并直接在命令行中执行 select all 命令,该表在下面显示正常,但是当我随后在浏览器中加载时它会错过第一行。相反,如果我随后修改表格(某种更改表格命令。例如添加列然后删除列命令,或创建一个全新的表格)然后直接进入浏览器(无需在命令行中选择全部),它在包含第一行的浏览器中加载正常。当我返回命令行并键入全选命令时,它显示空集并带有警告。然后我尝试显示警告,它说失去连接??!

总而言之,命令行中的全选命令会导致浏览器加载结果但缺少第一个;但是在浏览器中加载首先工作正常(所有行)但是在命令行中显示空集...

代码

PHP/SQL

<?php
require('../../connect.php');
$q = "SELECT * FROM table_1" or die("Unable to select data".mysqli_error($connection));
$r = mysqli_query($dbc, $q) or die("Unable to select data".mysqli_error($connection));
if ($r)
{
while( $row = mysqli_fetch_array( $r ))
{
echo '<br>'.$row['id'].'|'.$row['name'].'|'.$row['colour'].'|'.$row['price'];
}
}
mysqli_close( $dbc );
exit();

PHP 连接文件

<?php
$dbc = mysqli_connect('host', 'username', 'password')
OR die (mysqli_connect_error());
mysqli_select_db($dbc, 'database');
mysqli_set_charset( $dbc, 'utf8' );
?>

数据库

SELECT * FROM table;  
ALTER TABLE table ADD COLUMN temp INT NOT NULL;
ALTER TABLE table DROP COLUMN temp;

示例

当从浏览器处理 (SELECT * FROM table;) before 预先在命令行中执行相同的请求

1 | object1 | yellow | £50
2 | object2 | blue | £100
3 | object3 | red | £60

当从浏览器处理 (SELECT * FROM table;) after 在命令行中执行相同的请求

2 | object2 | blue | £100
3 | object3 | red | £60

命令行中的错误消息(首先在浏览器中加载时)

*Empty set, 26624 warnings (0.00 sec)*
SHOW WARNINGS;
*Error 2013 (HY000) Lost connection to MYSQL server during query*

最佳答案

错误 2013 的可能答案:我不知道您正在运行什么 php 配置,但请查看其中的内存设置。此外,您可能希望将 LIMIT 添加到查询中以限制结果数量,从而防止 2013 错误。

同时测试以下内容:

  SELECT * FROM table ORDER BY id ASC

看起来丢失的记录问题可能只是与数据访问相关:SQL 不能保证每次都给出相同的记录顺序。因此,当它们已经在内存中时,可能先有一个不同的内存块可用,然后才是您通常看到的内存块。保证数据顺序的唯一方法是使用 ORDER BY

关于php - SQL 服务器问题或连接/代码问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38708891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com