- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为“trucks”的 MySQL 数据库表,其中包含“truck_id”、“year”、“make”、“model”等字段。表中有六辆卡车。
我有一段 PHP 代码,它循环遍历每辆卡车并加载它。今天早上——而且只是今天早上——4 号卡车随机无法装载。
$TrucksQuery = Truck::GetTrucks();
while ($TruckRow = mysqli_fetch_assoc($TrucksQuery))
{
echo $TruckRow["truck_id"];
$T = new Truck();
$T->Load($TruckRow["truck_id"]);
var_dump($T);
}
上面的“echo”显示了所有 6 个卡车 ID。
“var_dump”显示了除卡车 4 之外的所有卡车的正确卡车对象(已填充字段),其中所有卡车均为 NULL,就好像尚未加载一样。
我正在调试代码,运行上面的代码大概十次,一切看起来都很好,但卡车 4 无法加载。然后随机地,4号卡车开始装货。我撤消了所有更改,因此代码看起来像上面的 block ,卡车 4 现在加载。我没有更改数据库,也没有更改代码,但现在它可以工作了...这是怎么回事?
直接查询数据库工作正常,所以我认为它没有损坏。
谢谢。
* 编辑 1 *
这是卡车->装载方法:
public function Load($truck_id = '')
{
global $db_link;
if ($truck_id != '')
$this->Settruck_id($truck_id);
//1.
$QueryString = "SELECT DISTINCT t.*, IFNULL((SELECT ot.truck_return_time
FROM trucks t
JOIN orders_trucks ot ON ot.truck_id = t.truck_id
WHERE NOW() BETWEEN ot.truck_leave_time AND ot.truck_return_time
AND t.truck_id = '".$this->Gettruck_id()."'), 'On hand') AS 'return_time', IFNULL((SELECT truck_leave_time
FROM orders_trucks
WHERE truck_id = '".$this->Gettruck_id()."'
AND truck_leave_time > NOW()
ORDER BY truck_leave_time ASC
LIMIT 1), '') AS 'next_job'
FROM trucks t
LEFT JOIN orders_trucks ot ON ot.truck_id = t.truck_id
WHERE t.truck_id = " . $this->truck_id;
$Result = mysqli_query($db_link, $QueryString);
$ResultArray = mysqli_fetch_assoc($Result);
$this->Settruck_id($ResultArray["truck_id"]);
//many more Set() calls
//2.
$QueryString = "SELECT t.t_name, t.territory_id
FROM territories t
LEFT JOIN truck_territories tt ON tt.territory_id = t.territory_id
LEFT JOIN trucks tr ON tr.truck_id = tt.truck_id
WHERE tr.truck_id = '".$this->truck_id."'";
$Result = mysqli_query($db_link, $QueryString);
$TempArray = array();
while($row = mysqli_fetch_assoc($Result))
$TempArray[] = $row["territory_id"];
$this->SetTerritoriesArray($TempArray);
}
* 编辑 2 *
这种情况今天又发生了,现在 3 号卡车无法装载。下面是我在每辆卡车上执行 var_dump 时看到的内容...可能值得注意的是,看看 PHP 是如何表示“object(Truck)#x”的,会发现它们不按顺序排列,并且数字 7 使用了两次(其中一个是 NULL):
object(Truck)#3 (24) {
["truck_id":protected]=>
string(1) "1"
["year":protected]=>
int(4) 2006
}
object(Truck)#4 (24) {
["truck_id":protected]=>
string(1) "2"
["year":protected]=>
int(4) 2007
}
object(Truck)#7 (24) {
["truck_id":protected]=>
NULL
["year":protected]=>
NULL
}
object(Truck)#6 (24) {
["truck_id":protected]=>
string(1) "4"
["year":protected]=>
int(4) 2007
}
object(Truck)#5 (24) {
["truck_id":protected]=>
string(1) "5"
["year":protected]=>
int(4) 2007
}
object(Truck)#11 (24) {
["truck_id":protected]=>
string(1) "6"
["year":protected]=>
int(4) 2009
}
object(Truck)#7 (24) {
["truck_id":protected]=>
string(1) "7"
["year":protected]=>
int(4) 2012
}
另一个注意事项:将 MYSQLI_USE_RESULT 添加到 GetTrucks() 的 mysqli_query() 中没有返回任何结果,但是一旦我删除它,所有卡车都正确地出现在结果中。
最佳答案
这是 Truck->Load() 方法中的编码问题。在第一个查询中,有时内部查询之一返回多行,这会破坏查询并阻止卡车装载。
由于查询只查看今天的日期,这就是为什么有一天卡车 X 可以工作,第二天就正常了,然后另一辆卡车可能会出现问题。
至于我的陈述“另一个注意事项:将 MYSQLI_USE_RESULT 添加到 GetTrucks() 的 mysqli_query() 中没有返回任何结果,但是一旦我删除它,所有卡车都正确地出现在结果中。”这一定是巧合,即在没有告诉我的情况下,有人修改了卡车的时间表(使内部查询只返回一个结果)。
感谢大家的帮助。
关于php - 循环查询,创建随机跳过的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22507225/
我有三张 table 。表 A 有选项名称(即颜色、尺寸)。表 B 有选项值名称(即蓝色、红色、黑色等)。表C通过将选项名称id和选项名称值id放在一起来建立关系。 我的查询需要显示值和选项的名称,而
在mysql中,如何计算一行中的非空单元格?我只想计算某些列之间的单元格,比如第 3-10 列之间的单元格。不是所有的列...同样,仅在该行中。 最佳答案 如果你想这样做,只能在 sql 中使用名称而
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在为版本7.6进行Elasticsearch查询 我的查询是这样的: { "query": { "bool": { "should": [ {
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
是否可以编写一个查询来检查任一子查询(而不是一个子查询)是否正确? SELECT * FROM employees e WHERE NOT EXISTS (
我找到了很多关于我的问题的答案,但问题没有解决 我有表格,有数据,例如: Data 1 Data 2 Data 3
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
我从 EditText 中获取了 String 值。以及提交查询的按钮。 String sql=editQuery.getText().toString();// SELECT * FROM empl
我有一个或多或少有效的查询(关于结果),但处理大约需要 45 秒。这对于在 GUI 中呈现数据来说肯定太长了。 所以我的需求是找到一个更快/更高效的查询(几毫秒左右会很好)我的数据表大约有 3000
这是我第一次使用 Stack Overflow,所以我希望我以正确的方式提出这个问题。 我有 2 个 SQL 查询,我正在尝试比较和识别缺失值,尽管我无法将 NULL 字段添加到第二个查询中以识别缺失
什么是动态 SQL 查询?何时需要使用动态 SQL 查询?我使用的是 SQL Server 2005。 最佳答案 这里有几篇文章: Introduction to Dynamic SQL Dynami
include "mysql.php"; $query= "SELECT ID,name,displayname,established,summary,searchlink,im
我有一个查询要“转换”为 mysql。这是查询: select top 5 * from (select id, firstName, lastName, sum(fileSize) as To
通过我的研究,我发现至少从 EF 4.1 开始,EF 查询上的 .ToString() 方法将返回要运行的 SQL。事实上,这对我来说非常有用,使用 Entity Framework 5 和 6。 但
我在构造查询来执行以下操作时遇到问题: 按activity_type_id过滤联系人,仅显示最近事件具有所需activity_type_id或为NULL(无事件)的联系人 表格结构如下: 一个联系人可
如何让我输入数据库的信息在输入数据 5 分钟后自行更新? 假设我有一张 table : +--+--+-----+ |id|ip|count| +--+--+-----+ |
我正在尝试搜索正好是 4 位数字的 ID,我知道我需要使用 LENGTH() 字符串函数,但找不到如何使用它的示例。我正在尝试以下(和其他变体)但它们不起作用。 SELECT max(car_id)
我有一个在 mysql 上运行良好的 sql 查询(查询 + 连接): select sum(pa.price) from user u , purchase pu , pack pa where (
我是一名优秀的程序员,十分优秀!