繁体   English   中英

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

[英]mysqli_query() expects parameter 2 to be string

我收到错误

警告:mysqli_query() 期望参数 2 为字符串,对象在 C:\\Program Files (x86)\\EasyPHP-DevServer-13.1VC9\\data\\localweb\\login.php 第 10 行错误:

在执行查询时

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

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

$sql是一个对象,如mysql_query

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

所以你不必再做另一个mysqli_query ,只需按照以下方式修改你的if

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

如果您需要检查查询失败,这将起作用,否则即使您的查询返回 0 行,它也可能返回mysqli_result ,因此请注意。

代替 :

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

if($sql === FALSE)

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

请参阅: mysqli_query()

尝试

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

试试这个代码:

  $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 中传递了该对象。

$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));
}

试试这个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM