mysqli_query()期望参数2是字符串

时间:2013-06-06 07:05:49

标签: mysql

我收到错误 警告:mysqli_query()要求参数2为字符串,对象在第10行的C:\ Program Files(x86)\ EasyPHP-DevServer-13.1VC9 \ data \ localweb \ login.php中给出 错误:

执行查询

<?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);
?>

5 个答案:

答案 0 :(得分:2)

if(!mysqli_query($con,$sql))不好,因为$sql是一个对象,而不是一个字符串

$sqlmysql_query

的对象
  

失败时返回FALSE。成功的SELECT,SHOW,DESCRIBE或   EXPLAIN查询mysqli_query()将返回一个mysqli_result对象。对于   其他成功的查询mysqli_query()将返回TRUE。

所以你不能再做mysqli_query,只需按照以下方式修改你的if

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

如果您需要检查查询失败,这将有效,否则即使您的查询返回0行也可以返回mysqli_result,所以请注意。

答案 1 :(得分:0)

替换:

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

if($sql === FALSE)

通过检查$sql为FALSE来证明查询是否失败。

请参阅:mysqli_query()

答案 2 :(得分: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

的对象

答案 3 :(得分: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中传递了该对象。

答案 4 :(得分: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));
}

试试这个。