如果(应该)比较(2)字符串错误地重定向的子句

时间:2016-07-26 12:57:36

标签: php mysql mysqli

在我的代码中,我有一堆if子句检查用户给定的输入是否有效插入数据库。现在有一个小的if子句,我想检查userinput是否与数据库中的给定字符串相同。我已经尝试了一天我的错误是什么,我似乎无法找到解决方案。

$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 }

我不知道问题是什么,因为'=='应该区分大小写,并且据我所知,你可以比较像这样的变量中的字符串。

1 个答案:

答案 0 :(得分:0)

为避免sql注入,最好使用prepared statement

要检查查询是否返回任何行,您可以检查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 }