我是 PHP 和 mysql 的新手,我在这里尝试一些东西。在我的 HTML 中,我有一个表单,我在其中输入里程,然后将其传递给 PHP 代码并转换为整数。然后我想拿它并检查数据库以隔离我想要的记录,以便我可以进行一些计算。换句话说,如果输入的里程数(我将它保存在一个名为 $term 的变量中)小于或等于表中的一个里程数,我想使用符合此条件的记录。例如,我输入 45 英里,表中有 40 英里和 50 英里的记录,我想选择 50 英里的水平。如果用户输入 51,我想使用 50 级别。像这样的东西。
它很好地连接到数据库,但我不确定如何在 foreach 语句中构造它。我有以下内容:
$term = (int)$_POST['term'];
try {
$dbh = new PDO("mysql:host=$hostname;dbname=ratetable", $username, $password);
/*** The SQL SELECT statement ***/
$sql = "SELECT * FROM rates WHERE mileage<=term";
foreach ($dbh->query($sql) as $row)
{
print $row['mileage'] .' - '. $row['ratepermile'] . '<br />';
}
/*** close the database connection ***/
$dbh = null;
}
当我这样做时,我得到一个为 foreach() 提供的无效参数。
然后我开始环顾四周,看到如下语句:
$stmt = $db->prepare( 'SELECT * FROM rates WHERE mileage<=:term' );
传递搜索参数的位置等等。
所以现在我很困惑正确的方法是在数据库中的里程升序列表中选择一条满足条件的记录(最后一个匹配的记录与所有匹配的记录)或如何正确构造 WHERE 参数。有什么建议么?
谢谢你的关注。