2017-02-23 50 views
0

Я использую для запуска этого кода в предыдущей версии PHP, чтобы нормально работать в настоящее время, я получаю эту ошибку, которая из-за новой версии PHP я пытался исправить эти проблемы как можно больше, но все еще иметь эти заключительные 2 предупреждения, что я не знаю, как преодолеть будет благодарен за решениеmysqli query() ожидает, что параметр 1 является mysqli,

Warning: mysqli_query() expects parameter 1 to be mysqli, string given in /home/u123456/public_html/sample/do_login.php on line 14 

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /home/u123456/public_html/sample/do_login.php on line 15 
Incorrect entry, Click here to go back 


<?php 
if(empty($_POST['user']) or empty($_POST['password'])) 
die("<center>User or Password is empty</br><a href=index.php>Click to go back</a></center>"); 
include('db.php'); 
session_start(); 
$uname= mysqli_real_escape_string($mysqlConnection, $_POST['user']); // using mysql_real_escape to protect against mysql injection 
$pass=mysqli_real_escape_string ($mysqlConnection, md5($_POST['password'])); // using mysql_real_escape to protect against mysql injection 
$code=$_POST['code']; 


if ($code==$_SESSION["captchacode"]) 
{ 

$result = mysqli_query($uname, $pass, "SELECT * FROM user WHERE username='$uname' and password='$pass'"); 
if (mysqli_num_rows($result)>0) 
{ 
$_SESSION['check']=1; 
$row=mysqli_fetch_array($result); 
$username2=$row['name']; 
$_SESSION['name2']=$username2; 

$type222=$row['type']; 
$_SESSION['type2']=$type222; 

$time22=$row['time_stamp']; 
$_SESSION['time22']=$time22; 

$un=$row['id']; 
$_SESSION['un']=$un; 


echo "<meta http-equiv='Refresh' content='1;url=main.php'>"; 
} 

else 
{ 
$_SESSION['check']="2"; 

echo "Incorrect entry, <a href=index.php>Click here</a> to go back"; 
} 
} 
else 
echo "You did not input the code correctly, <a href=index.php>Click here</a> to go back and check your entry"; 

?> 
+0

Вы точно знаете, как работает 'mysqli_ *'? прочитайте демо-версию, а затем начните работу. –

+0

Вторая ошибка происходит из-за первой. – MrDarkLynx

+0

Привет. Вы не понимаете, как работает mySqli. Ваш запрос просто полностью ошибочен. Также вы должны взглянуть на http://bobby-tables.com и узнать что-то о подготовленных заявлениях. Ваш запрос небезопасен и взломать вашу базу данных будет за несколько секунд, даже с побегом. – Twinfriends

ответ

1

Вы передаете строку в mysqli_query. Первым параметром, который вы вводите, является $ uname, который является строкой.

Изучите документацию на http://php.net/manual/en/mysqli.query.php.

У вас есть escape-строка в $ uname и $ upass, поэтому вы можете просто присоединиться к строкам, подобным этому.

$result = mysqli_query($mysqli_connection, "SELECT * FROM user WHERE username='{$uname}' and password='{$pass}'"); 

Где $ mysqli_connection должен быть экземпляр возвращаемый mysqli_connect. (http://php.net/manual/en/function.mysqli-connect.php)

+0

Вы случайно что-то забыли? – MrDarkLynx

+0

Что значит? –

+0

Я имею в виду '$ link'.' mysqli_query' принимает два параметра – MrDarkLynx

1

Прежде всего, вы должны передать один параметр в качестве переменной подключения db в mysqli_query.

$result = mysqli_query($yourdbconnectionvariable,"SELECT * FROM user WHERE username='$uname' and password='$pass'"); 
+0

'Вторая вещь не используется mysqli_query, она будет устаревшей ..' Скажите, что ??? Источник??? Никогда не слышал о том, что они не будут поддерживать более длительный mysqli. Вы уверены, что не смешиваете его с mysql_query? (Существует большая разница между mysql и mysqli) – Twinfriends