提取错误的数据

时间:2019-07-13 11:15:54

标签: php mysql

我正在从数据库中提取数据,但得到的回报却参差不齐。我需要的是bex_ref有值并且在两个日期之间的所有条目中的bex_ref

使用两条语句,我得到正确的结果。但是结合起来,它会返回bex_ref为空的数据。

组合(无效)

$stmt = $mysqli->prepare("SELECT `id`, `bex_ref` FROM `deliveries` WHERE `bex_ref`<>'' AND `inv_date` BETWEEN '2019-06-01' AND '2019-07-13'  LIMIT 50 ")

第一(工作)

$stmt = $mysqli->prepare("SELECT `id`, `bex_ref` FROM `deliveries` WHERE `bex_ref`<>'' LIMIT 50 ")

第二(工作)

$stmt = $mysqli->prepare("SELECT `id`, `bex_ref` FROM `deliveries` WHERE  `inv_date` BETWEEN '2019-06-01' AND '2019-07-13'  LIMIT 50 ")

我希望所有结果都应具有一个bex_ref值,但会得到bex_ref为空但在正确的日期范围内的返回值。

1 个答案:

答案 0 :(得分:0)

好的,所以我的数据库有些奇怪。我注意到在运行查询时,我实际上可以使用。

$stmt = $mysqli->prepare("SELECT `id`, `bex_ref` FROM `deliveries` WHERE `bex_ref`<>'' AND `inv_date` BETWEEN '2019-06-01' AND '2019-07-13'  LIMIT 50 ")

但是当我想回显我的bef_ref值时,我的代码没有执行。在phpmyadmin中运行它,我得到的返回值为空值(因此造成混乱)。

然后我使用mysqli_real_escape_string()清理了返回值,并且在“空”值中它是不可见的0(在real_escape之后返回/ 0)。我将数据库中的排序规则从latin1_swedish_ci更改为utf8mb4_unicode_ci,一切都很好。

两天前他们在我的数据库上进行了数据库还原,并且数据库必须将其还原为默认的latin1_swedish_ci。

谢谢您的回复!