为什么mysqli_num_rows总是返回0?

时间:2017-08-15 10:26:15

标签: php mysql database

我想在用户点击提交按钮后检查用户的输入是否存在于数据库中。

因此,我有这个代码。但是,它总是说数据不存在,它发现条件为false。

我的代码有什么问题?

$input_word = trim($_POST["word"]);
$data_check = "SELECT * FROM word_collections WHERE single_word = '$input_word'";
$a = mysqli_query($data_check);
if (mysqli_num_rows($a) == 1)
{
    echo "Data exist.";
}
else
{
    echo "Data DOES NOT exist";
}

3 个答案:

答案 0 :(得分:5)

您的查询失败,因为您未将数据库连接传递给:

$a = mysqli_query($data_check);

连接的变量未知,因此您需要立足于:

$a = mysqli_query($connection, $data_check);

您可能必须使用>0代替==1代替num_rows(),因为可能会有多条记录。

你的代码也开放给sql注入;使用准备好的声明。

在查询中使用PHP的error reportingmysqli_error($connection)

还要确保您的连接实际上是mysqli_,而不是另一个api。

答案 1 :(得分:0)

$input_word = trim($_POST["word"]);
    $data_check = "SELECT * FROM word_collections WHERE single_word = '$input_word'";
                        $con = mysqli_connect("host",'id','pass','dbname'); // add this connection
                        $a = mysqli_query($con,$data_check);
                        if (mysqli_num_rows($a) == 1)
                        {
                            echo "Data exist.";
                        }
                        else
                        {
                            echo "Data DOES NOT exist";
                        }

您需要将您的连接放在mysqli_query参数1中。您可以参考w3schools中的教程。

答案 2 :(得分:0)

最好的办法。

$dbhost = 'localhost';
$dbuser = 'username';
$dbuser = 'password';
$dbpass = 'dbname';
$dbConn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

$query = "SELECT * FROM word_collections WHERE single_word = '$input_word'";

$result = $dbConn->query($query);
if($result->num_rows == 1){
    echo "have some records";
}else{
    echo "No records";
}