2013-06-06 48 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)); 
} 

试试这个。

相关问题