私はPHPとmysqlが初めてで、ここで何かを試しています。私の HTML には、走行距離を入力する 1 つのフォームがあり、それが 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 引数を正しく構造化する方法について混乱しています。助言がありますか?
ご覧いただきありがとうございます。