我正在从数据库中提取数据,但得到的回报却参差不齐。我需要的是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
为空但在正确的日期范围内的返回值。
答案 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。
谢谢您的回复!