【问题标题】:SQL SELECT WHERE field LIKE PHP variable. [duplicate]SQL SELECT WHERE 字段 LIKE PHP 变量。 [复制]
【发布时间】:2018-08-24 19:02:04
【问题描述】:

我在使用带有 SQL LIKE 命令的 php 变量时遇到了一些问题。下面的代码按其应有的方式运行。但是,如果我更改$model = "Cruze Limited";,我不会从数据库中获得任何回报。我希望在$model = "Cruze"; 返回所有型号包含“Cruze”的车辆时得到的结果至少相同。

我有一种感觉,我只是错过了一些小的语法错误,但我无法将手指放在上面。如果是这种情况,我提前道歉。

<?php 
$make = "Chevrolet";
$model = "Cruze";

$trim = "LT";

$year = '2017';

$query = "SELECT *
          FROM my_table
          WHERE year = '$year'
          AND make = '$make'
          AND model LIKE '$model%'";

$statement = $db->prepare($query);
$statement->execute();

html>
<body>
  <?php while($vehicles = $statement->fetch()): ?>
      <h4><?= $vehicles['year'] ?></h4>
      <h4><?= $vehicles['stock'] ?></h4>
      <h4><?= $vehicles['kms'] ?></h4>
      <h4>$<?= $vehicles['price'] ?></h4>
      <h4><?= $vehicles['make'] ?></h4>
      <h4><?= $vehicles['model'] ?></h4>
      <a href="<?=$vehicles['photos']?>">Photo</a>
  <?php endwhile ?>
<body>
</html>



?>

【问题讨论】:

  • " 我希望至少与$model = "Cruze"; 时得到的结果相同。" - 不一样。
  • $model% 返回由$model开始的所有记录,而不是“包含”。
  • 检查这一点的一个好方法是以某种方式输出查询。在正文标签之后添加&lt;?= $query; ?&gt;,这至少应该为您指明正确的方向。另外,@Syscall 是正确的,你应该使用'%$model%' 而不是'$model%'

标签: php mysql pdo sql-like


【解决方案1】:

试试这个

$query = "SELECT *
          FROM my_table
          WHERE year = '$year'
          AND make = '$make'
          AND LOCATE(model,'$model') > 0";

【讨论】:

  • 是的,这行得通!谢谢!
猜你喜欢
  • 2013-05-01
  • 2011-04-06
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多