【问题标题】:Can't fetch data from MySQL with almost same name in PHP无法在 PHP 中从 MySQL 中获取几乎相同名称的数据
【发布时间】:2022-01-25 18:36:57
【问题描述】:

我已将 3 行插入到我的数据库表 orders

我从中获取数据的列之一是barname_num

这 3 行具有上述 col 的这些值:

hdm1350WIRG6351-01

hdm1350WIRG6351-02

hdm1350WIRG6351-03

问题是这些都没有被提取!我正在使用mysqli_fetch_array,我尝试了mysqli_fetch_assoc,但仍然无法正常工作。

所有其他行都很好,问题仅在于这 3 行!什么问题?!

更新*:我尝试更改 Collation 但它不相关。

顺便说一下,这里是php代码:

$sql = "SELECT * FROM orders WHERE barname_num = ?";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt , $sql)){
    echo "sql not prepared!";
    exit();
}
else{
    mysqli_stmt_bind_param($stmt , "s" , $barname_num);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);
    if($r = mysqli_fetch_array($result)){
.
.
.

【问题讨论】:

  • $barname_num的值是多少?
  • 我已经提到了价值观
  • 这些是表中的值,您在 PHP 代码中使用的变量的值是多少?
  • 一个变量不能有3个值。
  • 如果真的是正确的,那么你抓取的时候就会得到一个结果。

标签: php mysql


【解决方案1】:

数据中似乎有一些不可见的字符。作为一种解决方法,直到您可以解决这个问题,您可以使用 LIKE 忽略它们。

$sql = "SELECT * FROM orders WHERE barname_num LIKE ?";
$stmt = mysqli_stmt_init($conn);
$barname_num = "%$barname_num%";
mysqli_stmt_bind_param($stmt , "s" , $barname_num);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if($r = mysqli_fetch_array($result)){

【讨论】:

  • 我会在一个新的整个项目中测试它并让你知道。再次感谢
  • 我测试了它,发现问题实际上是数据库值中的TAB。但是,为什么它会自动生成,我不知道,但这就是问题所在。
  • 这迫使我对所有人说这句话。总是 trim() 你的数据 :)
  • 确实,我用trim() 或同等语言回答了几乎所有语言的许多问题。
【解决方案2】:

从值中删除空格并尝试或者您可以使用 LIKE

【讨论】:

  • 已经回答。不需要
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-11
  • 1970-01-01
  • 1970-01-01
  • 2021-08-08
  • 2018-10-03
  • 2011-05-09
相关资源
最近更新 更多