2016-09-10 5 views
0
です。
<?php 
require_once("connect.php"); 

$login1 = $_POST['email']; 
$password1 = $_POST['password']; 
$select = "SELECT id FROM loginregistration WHERE login ='$login1', password ='$password1'"; 
$sql = mysqli_query($con,$select); 
$row = mysqli_fetch_assoc($sql); 
?>` 

私のmysqli_queryは機能しません。mysqli_fetch_assoc()は、パラメータ1がmysqli_resultになることを期待しています。ブール値は

+0

可能な重複は、ブールが所与、パラメータ1は、リソースまたはmysqliの\の_resultことを期待します](http://stackoverflow.com/questions/2973202/mysqli-fetch-array-mysqli-fetch-assoc-mysqli-fetch-row-expects-parameter-1) – David

+0

最初にすべきことは、SQLインジェクションを修正することです脆弱性(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)そのようにして、ユーザーが独自のクエリを定義させる代わりに、実行するクエリを実際に制御しています。次に実行する必要があるのは、クエリを実行した後でエラーをチェックし、成功したと仮定しないことです。データベースは問題の内容を伝えていますが、このコードはそのエラーメッセージを無視します。 – David

+0

パスワードの近くでカンマを連結して削除します$ select = "ログインIDを入力してログインするにはログイン名を入力してください"; $ login1。 "'とパスワード='" $ password1 "" "; – JYoThI

答えて

2

使用し、なぜクエリがfalseを返すのパスワードの近くにクエリでカンマ(、)のinstedと

$select = "SELECT id FROM loginregistration WHERE login ='".$login1."' and password ='".$password1."'"; 

UPDATE 1

そのエラーをスロークエリは、それがfalseを返す失敗した場合。 mysqli_error($ con)を使うことができます。エラーを知っている[mysqliの\ _fetch \ _array()/ mysqliの\ _fetch \ _assoc()/ mysqliの\ _fetch \ _ROW()の

<?php 
    require_once("connect.php"); 

    $login1 = $_POST['email']; 
    $password1 = $_POST['password']; 
    $select = "SELECT id FROM loginregistration WHERE login ='".$login1."' AND password ='".$password1."'"; 
    $sql = mysqli_query($con,$select); 

    if($sql === FALSE) { 
     die(mysqli_error($con)); // better error handling 
    } 

    $row = mysqli_fetch_assoc($sql); 
    ?> 
+0

ああ、ありがとう;) –

関連する問題