警告:mysqli_query() 期望参数 2 是字符串,对象在

Posted

技术标签:

【中文标题】警告:mysqli_query() 期望参数 2 是字符串,对象在【英文标题】:Warning: mysqli_query() expects parameter 2 to be string, object given in 【发布时间】:2014-02-12 15:39:36 【问题描述】:

早上好!

我是 php 新手。我正在尝试使这个脚本工作,但向我展示了这个问题。这是一种修改mysql数据库中一些记录的格式。代码获取了数据,但它向我显示了那个错误,当我运行修改时,它向我显示了几个问题......

警告:mysqli_query() 期望参数 2 是字符串,给定对象 在 C:\wamp\www\CTE\formedicion.php 第 15 行

我仍然不知道如何解决它。非常感谢您的帮助。

谢谢!

<body>

<?php

include "conexiondb.php";

if(!isset($_POST['submit']))

//$busqueda=$con->query(    
$muestra=$con->query("SELECT * FROM clientes C INNER JOIN producto P ON C.serial  = P.serial WHERE P.serial = $_GET[serial]");

//mysqli_query($con,$sql);  
mysqli_query($con,$muestra);

$person=$muestra->fetch_array();

?>

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">

  cliente<input type = "text" name="inputcliente" value = "<?php echo $person['cliente']; ?>" /><br/>

  cedula <input type = "text" name="inputcedula" value = "<?php echo $person['cedula']; ?>" /><br/>

<input type="hidden" name="serial" value="<?php echo $_GET['serial'];?>"/>
<input type = "submit" name = "submit" value= "Modificar"/>
</form>

  <?php
  if (isset($_POST ['submit']))

$u = "UPDATE cliente SET'cliente'='$_POST[inputcliente]','cedula' = '$_POST[inputcedula]' WHERE serial=$_POST[serial]";
mysqli_query($con,$u);

echo "El usuario ha sido modificado";
header ("Location:busca.php");

 else 

      

  ?>
</body>
</html>

【问题讨论】:

危险:你很容易受到SQL injection attacks的影响,你需要defend你自己。 你需要真正逃离兄弟 【参考方案1】:

改变

$muestra=$con->query("SELECT * FROM clientes C 
INNER JOIN producto P ON C.serial  = P.serial WHERE P.serial = $_GET[serial]");

//更新以清理输入

$serial = mysqli_real_escape_string($con,$_GET[serial]) ;

$qry="SELECT * FROM clientes C 
INNER JOIN producto P ON C.serial  = P.serial WHERE P.serial = $serial";

然后

$muestra = mysqli_query($con,$qry);

【讨论】:

直接使用$_GET[serial] 没有任何转义是非常不明智的想法【参考方案2】:

阅读 mysqli 参考并从给出的错误中学习

你的错误是 mysqli_query 期望第二个参数是一个字符串,但你没有给出 一个字符串变量作为参数。

mysqli_query($con,$query)$query 是字符串,$con 是对象。

您的解决方案是让 $muestra 成为一个字符串。

$muestra="SELECT * FROM clientes C INNER JOIN producto P ON C.serial  = P.serial WHERE P.serial = $_GET[serial]";

【讨论】:

以上是关于警告:mysqli_query() 期望参数 2 是字符串,对象在的主要内容,如果未能解决你的问题,请参考以下文章

警告:mysqli_query() 至少需要 2 个参数,1 个在第 10 行的 C:\wamp64\www\OBJEPRO\dbcrud.php 中给出

mysqli_query 上的未定义变量

用户“root”的访问被拒绝; @localhost'(使用密码:YES) 和 mysqli_query() 期望参数 1 为 mysqli,bool 给定 [重复]

警告:mysqli_free_result() 再次 [重复]

警告:mysql_query() 期望参数 2 是资源 [重复]

获取 PHP 错误警告:fputcsv() 期望参数 2 为数组