【发布时间】:2019-12-02 16:52:51
【问题描述】:
这里有我之前威胁的声明 PHP MySQL How to select 2 specific and 1 common value over 2 tables? 有些事情让我感到困惑,但首先是重要代码部分:
$stmt = $pdo->prepare("SELECT
table1.spediteur,
table2.versendet,
table2.unique_code,
table1.unique_code
FROM table1
INNER JOIN table2
ON table1.unique_code = table2.unique_code
WHERE table1.unique_code = $scanned_number
AND table2.unique_code = $scanned_number
GROUP BY table1.spediteur,
table2.versendet,
table2.unique_code,
table1.unique_code
HAVING table1.spediteur = 'Dachser'
AND table2.versendet = '0000-00-00 00:00:00'
");
$stmt->execute([$scanned_number]);
$result = $stmt->fetch();
if ($result) {
?> the scanned number matches the given parameter
<?php
$sql = "UPDATE table2 SET versendet = date('Y-m-d H:i:s') WHERE unique_code = $scanned_number";
$stmt = $pdo->prepare($sql);
$stmt->execute();
} else {
?> the scanned number don´t matches
<?php
}?>
这个函数只是寻找一些相似的和现有的值。 它通过 Xampp PHP 版本 7.3.7 在我的 PC 上运行 / Xampp 上的笔记本电脑版本是 7.1.11
在我的电脑上,服务器字符集是 cp1252 West European (latin1)
在我的笔记本电脑上,它也是 cp1252 West European (latin1) 。 utf8mb4 具有相同的结果。
好的,现在是最后一个序列:
AND table2.versendet = '0000-00-00 00:00:00'
看看,那里有没有。
在我的 PC 上,这对于我的代码来说已经足够了,如果 保存的值是 '0000-00-00 00:00:00' -> 代码用当前日期时间更新它。
如果我在我的笔记本电脑上启动此代码,代码saye,不,'0000-00-00 00:00:00' 没有任何内容,并给我一条错误消息。
但是如果我将该代码更改为
AND table2.versendet = date('Y-m-d' H:i:s' = '0000-00-00 00:00:00')
它就像在我的电脑上一样工作,我绝对不知道为什么。
所以,如果有人理解我,请告诉我:谁是我的错。在此先感谢:)
【问题讨论】:
-
没有聚合函数的 GROUP BY 子句没有多大意义,所以我们重新开始吧。
-
请添加您的 xampp 服务器的 mysql 版本,并向我们展示两种结果之间的差异。如果您向我们展示您的 qiery 的 dbfiddle 版本的数据,这将有助于重现您的问题
-
SET versendet = date('Y-m-d H:i:s')- 您是否尝试在 SQL 查询中执行 PHP 函数? -
if ($result)- 不告诉您是否找到任何行。它只会告诉您查询是否已成功执行。 -
@Paul Spiegel 谢谢你的提问。我不是专家,只是通过反复试验了解更多信息。你也帮我。下面来自草莓的代码有效。
标签: php mysql date datetime xampp