在我的代码中,我有一堆if子句,用于检查用户给定的输入是否有效,以便插入数据库。现在有一个小if子句,我想检查用户输入是否与数据库中的给定字符串相同。我已经试了一天了,现在我的错误是什么,但我似乎找不到解决办法。
$car = $_POST['car'];
$exists = mysqli_query("SELECT car FROM box WHERE car = '".$car."' AND del = 0;");
if($car == $exists) { //same string, give error1 } else { give error2 }
我不知道问题可能是什么,因为"=="应该是区分大小写的,而且据我所知,你可以比较这样的变量中的字符串。
为了避免sql注入,您应该更好地使用prepared语句。
若要检查查询是否返回任何行,可以检查num_rows
属性。
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$carFound = false;
if ($stmt = $mysqli->prepare("SELECT car FROM box WHERE car = ? AND del = 0")) {
$car = $_POST['car'];
$stmt->bind_param("s", $car);
if ($stmt->execute() && $stmt->num_rows>0) {
$carFound = true;
}
}
//if (carFound) { same string, give error1 } else { give error2 }