2017-02-23 121 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

您已在$ 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

首先,您應該在mysqli_query中傳遞一個作爲db連接變量的參數。

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

'第二件事不使用mysqli_query它會被棄用。資源???從來沒有聽說過他們不會支持更長的mysqli。你確定你沒有把它與'mysql_query'混合嗎? (mysql和mysqli之間有很大的區別) – Twinfriends

相關問題