mysqli_stmt :: bind_param():变量数量与准备好的语句中的参数数量不匹配 [英] mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in

查看:88
本文介绍了mysqli_stmt :: bind_param():变量数量与准备好的语句中的参数数量不匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想运行多个mysql查询(不能同时运行).我正在使用准备好的语句来这样做.这是我的代码的要点:

I want to run multiple mysql queries( not concurrently). I am using prepared statements for doing so. This is a gist of my code :

    <?php



if(isset($_GET['username'])&&isset($_GET['activationid'])){

require_once("../database/db_connect.php");

$stmt= $mysqli->stmt_init();
$stmt->prepare("Select username FROM users where username= ? AND activationid= ?");
$username=$_GET['username'];
$activationid=$_GET['activationid'];
$stmt->bind_param("ss",$username,$activationid);
$stmt->execute();
$row=$stmt->get_result()->fetch_array(MYSQLI_ASSOC);

if(!strcmp($row['username'],$username)){
    echo 'you are registered successfully';



$stmt->prepare("UPDATE users SET active=yes where username = ?");
$stmt->bind_param("s",$username);
$stmt->execute();







}
}

?>

和db_connect.php是:

and db_connect.php is :

<?php 





define('DBHOST','localhost');
define('DBUSER','root');
define('DBPASS','password');
define('DBNAME','Reminder');

    $mysqli= new mysqli(DBHOST,DBUSER,DBPASS,DBNAME) ;
    if($mysqli->connect_error) { 

    echo $mysqli->mysqli_connect_error();

    }
else {
echo "connected successfully";
}




?>

这给了我这个错误:

警告:mysqli_stmt :: bind_param():变量数量不匹配 准备好的语句中的参数数量

Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in

有人可以告诉我我在做什么错吗?

can anybody tell me what I am doing wrong ?

推荐答案

请按如下所示整理您的代码并检查:-

Please chenge your code like below and check:-

//$stmt= $mysqli->stmt_init(); comment this line
$stmt = $mysqli->prepare("Select username FROM users where username= ? AND activationid= ?") or die( $mysqli->error);
$username=$_GET['username'];
$activationid=$_GET['activationid'];
$stmt->bind_param("ss",$userid,$activationid);
$stmt->execute();

第二个相同:-

$stmt = $mysqli->prepare("UPDATE users SET active=yes where username = ?") or die($mysqli->error);
$stmt->bind_param("s",$username);
$stmt->execute();

注意:-请注意正确定义和设置变量.谢谢.

Note:- Please take care that your variables are properly defined and set. thanks.

这篇关于mysqli_stmt :: bind_param():变量数量与准备好的语句中的参数数量不匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆