2013-06-06 46 views
2

我收到錯誤 警告:mysqli_query()期望參數2是字符串,在C:\ Program Files(x86)\ EasyPHP-DevServer-13.1VC9 \ data中給出的對象\在第10行 錯誤localweb \ login.php中:mysqli_query()期望參數2爲字符串

上執行查詢

<?php 
$con=mysqli_connect("127.0.0.1","root","","forms"); 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    $sql=mysqli_query($con,"SELECT * FROM register Where username='$_POST[username]' AND password='$_POST[password]'"); 

    if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 
echo "login success"; 

mysqli_close($con); 
?> 
+2

您的代碼暴露給** SQL注入**。首先清理輸入數據。 – Raptor

+1

也,你調用了'mysqli_query()'兩次。第二個是不正確的和不必要的 – Raptor

+0

[Warning:mysql \ _fetch \ _ \ * *期望參數1是資源,布爾給定錯誤](http://stackoverflow.com/questions/11674312/warning-mysql-fetch-expects -parameter-1-to-resource-boolean-given-error) – taocp

回答

2
if(!mysqli_query($con,$sql))

不好作爲$sql是一個對象,而不是字符串

$sql是一個對象作爲mysql_query

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.

所以你沒有做其他mysqli_query,只需修改if通過以下方式

if(!$sql) 
{ 
    //do something 
} 

,如果你需要檢查查詢失敗這將工作,否則它會返回一個mysqli_result即使你的查詢已經返回了0行,所以請付費。

+0

這是最好的答案。 –

0

替換:

if (!mysqli_query($con,$sql)) 

if($sql === FALSE) 

通過檢查$sql是假證明查詢失敗與否。

參見:mysqli_query()

0

嘗試

<?php 
     $con=mysqli_connect("127.0.0.1","root","","forms"); 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    $sql="SELECT * FROM register Where username='$_POST[username]' AND password='$_POST[password]'"; 

    if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 
echo "login success"; 

mysqli_close($con); 
?> 

因爲你可以執行查詢,這應該是一個字符串。但在你的代碼

$ SQL = mysqli_query()

返回一個對象以$ SQL

0

試試這個代碼:

$sql="SELECT * FROM register Where username='".$_POST[username]."' AND password='."$_POST[password]."'"; 

    if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 

在你的代碼已經使用mysqli_query和你再次在mysqli_query中傳遞該對象。

0
$sql = 'SELECT * FROM register Where username=\'' . $_POST[username]. '\' AND password=\''. $_POST[password].'\' '; 
$response=mysqli_query($con, $sql); 
if (empty($response)) 
{ 
    die('Error: ' . mysqli_error($con)); 
} 

試試這個。

相關問題