ここに私がしていることがあります。MySQLクエリで何かが返されたかどうかを調べるのに問題がある
- $ get_versionのURLに「バージョン」の値があるかどうかを確認しています。
- データベースから最新バージョンを取得し、デフォルト変数として設定します。
- URL変数が良好な場合は、データベースが存在するかどうかを確認し、適切な変数を設定します。
- 存在しない場合は、上記のデフォルト値を使用してください。
常に「不正なクエリセクション」に移動します。どちらかのクエリが間違っているか、if文が機能しません。
ここに私のコードです。また、それを行うクリーナーの方法はありますか?
// Check if there's a version in URL. If not, set to empty.
$get_version = isset($_GET['version']) ? $_GET['version'] : '';
// Set defaults if nothing in URL
$query = "SELECT * FROM sn_hockey_versions ORDER BY version_id DESC LIMIT 1";
mysqli_query($db, $query) or die('Error querying database.');
$result = mysqli_query($db, $query);
while ($row = mysqli_fetch_array($result)) {
$newest_version_id = $row['version_id'];
$newest_sections = $row['sections'];
}
if (!empty($get_version) && preg_match('/^[0-9.]*$/', $get_version)) {
$query = "SELECT version_id, sections FROM sn_hockey_versions WHERE version = '".$get_version."'";
mysqli_query($db, $query) or die('Error querying database.');
$result = mysqli_query($db, $query);
if ($row = mysqli_fetch_array($result)) {
$set_version = $row['version_id'];
$v_sections = $row['sections'];
$test = "IT WORKS!!!!";
}
else {
$set_version = $newest_version_id;
$v_sections = $newest_sections;
$test = "Bad query";
}
}
else {
$set_version = $newest_version_id;
$v_sections = $newest_sections;
$test = "Set default";
}
mysql関数は、失敗するとブール値falseを返します。あなたはそれをチェックすることを心配することはありません。そして、どの行とも一致/変更しない 'select'または' update'クエリは失敗ではないことに注意してください。何も成し遂げられなかった成功したクエリです。 –