2013-09-26 2 views
-2

Как исправить эту проблему?Как исправить Предупреждение: mysql_num_rows(): предоставленный аргумент не является допустимым ресурсом результата MySQL

Предупреждение: mysql_num_rows(): поставляется аргумент не является допустимым MySQL результат ресурса в /home/u940004575/public_html/index.php на линии 114

Я изменил и повозился с этим кодом слишком долго кто-то пожалуйста, помогите

<? 
    mysql_connect("XXXXX","XXXXX","XXXXX") or die(mysql_error()); 
    mysql_select_db("u940004575_chat"); 

    $myusername = stripslashes($myusername); 
    $mypassword = stripslashes($mypassword); 
    $sha1mypassword = sha1($mypassword); 
    $myusername = mysql_real_escape_string($myusername); 
    $mypassword = mysql_real_escape_string($mypassword); 
    $sha1mypassword = mysql_real_escape_string($sha1mypassword); 
    $sql=mysql_query("SELECT id FROM users WHERE username='$myusername' and password='$sha1mypassword'")or die(mysql_error()); 
    $result=mysql_query($sql); 

    $count=mysql_num_rows($result); 
    if($count==1){ 
    session_register("myusername"); 
    session_register("mypassword"); 
    header("location:home.php"); 
    } 
    else { 
    echo "Wrong Username or Password"; 
    } 

    ?> 
+0

много устаревших функций .... – itachi

+1

Действительно больно видеть такой код. Сначала не используйте короткие открытые теги, это избавит вас от некоторых проблем при переходе в другую среду ''. Второе использование PDO или mysqli с подготовленными операторами, это предотвратит большинство векторов атаки инъекций SQL. Последнее, пожалуйста, не используйте 'sha1', это очень быстро, и вы должны использовать что-то вроде' bcrypt'. – HamZa

+0

Вы должны выполнить 'if ($ result)' перед проверкой 'mysql_num_rows()'. Вы все равно используете устаревшие функции базы данных, и вам нужно использовать что-то вроде mysqli или PDO. – MahanGM

ответ

1

Используйте if условие чтобы избежать этой ошибки

Попробуйте

<?php 
    mysql_connect("XXXXX","XXXXX","XXXXX") or die(mysql_error()); 
    mysql_select_db("u940004575_chat"); 

    $myusername = stripslashes($myusername); 
    $mypassword = stripslashes($mypassword); 
    $sha1mypassword = sha1($mypassword); 
    $myusername = mysql_real_escape_string($myusername); 
    $mypassword = mysql_real_escape_string($mypassword); 
    $sha1mypassword = mysql_real_escape_string($sha1mypassword); 
    $sql=mysql_query("SELECT id FROM users WHERE username='".$myusername."' and password='".$sha1mypassword."'")or die(mysql_error()); 


    if($sql){ 
$count=mysql_num_rows($sql); 
} 
    if($count==1){ 
    session_register("myusername"); 
    session_register("mypassword"); 
    header("location:home.php"); 
    } 
    else { 
    echo "Wrong Username or Password"; 
    } 

    ?> 

Использование <?php вместо <?

+0

оператор if работал, но $ count is not = до 1 –

+0

см. Мой ответ на вопрос. используйте 'username = '". $ myusername. "' вместо' username = '$ myusername'' и 'password ='". $ sha1mypassword. "'вместо' password =' ​​$ sha1mypassword'' –

1

изменить это в коде:

$sql="SELECT id FROM users WHERE username='$myusername' and password='$sha1mypassword'"; 
$result=mysql_query($sql); 

вы используете mysql_query в обоих месте.

для вашей информации mysql_ устарел.

Смежные вопросы

 Смежные вопросы