【发布时间】: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开始的所有记录,而不是“包含”。 -
检查这一点的一个好方法是以某种方式输出查询。在正文标签之后添加
<?= $query; ?>,这至少应该为您指明正确的方向。另外,@Syscall 是正确的,你应该使用'%$model%'而不是'$model%'