2017-08-15 22 views
1

単語がデータベースに存在する場合、送信ボタンを押した後にユーザーの入力を確認したいと思います。なぜmysqli_num_rowsは常に0を返しますか?

したがって、私はこのコードを持っています。しかし、それは常に、条件が偽であることを発見したDataは存在しないと言います。

以下のコードで何が問題になっていますか?

$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"; 
} 
+1

本当に1を超えないことを確認してください。さらに重要なことは、あなたは[SQL Injections](http://php.net/manual/en/security.database.sql-injection.php)に広く関わっており、実際には[Prepared Statements](http:// php。 net/manual/en/mysqli.quickstart.prepared-statements.php)を実行してください。あなたがユーザーの入力をまったくエスケープしていないからです! –

+0

私はmysqli_num_rowsが1または0のどちらかを返す記事を読んでいます@MagnusEriksson –

+0

いいえ。それはクエリで返された行の数を返します。 "num_rows" = "行数"。 php関数に関する質問がある場合は、常にsoure:[the php manual](http://php.net/manual/en/mysqli-result.num-rows.php) –

答えて

5

あなたのクエリは、あなたがにDB接続合格しなかったために失敗した:

$a = mysqli_query($data_check); 

を接続するための変数が不明であるので、あなたは上で自分自身をベースにする必要があります。

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

num_rows()には==1の代わりに>0を使用する必要があります。複数のレコードが存在する可能性があります。

あなたのコードはSQLインジェクションにもオープンしています。準備されたステートメントを使用してください。

PHPのerror reportingmysqli_error($connection)をクエリに使用します。

接続が実際にmysqli_で、別のAPIではないことも確認してください。

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"; 
         } 

あなたはw3schoolsからチュートリアルを参照することがmysqli_queryパラメータ1での接続を配置する必要があります。

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"; 
} 
関連する問題