dongliuzhuan1219 2019-01-17 11:06
浏览 47
已采纳

变量数与php的参数数量不匹配

Just begun to learn php and encounter this problem.: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement

Everything is working, my data is saved to database, and i get the message that show, "Registration successful", but i still get that error message.

Error is shown in this line

$stmt->bind_param("ssss", $firstname, $surname, $passwor, $email);

$firstname = $_POST['firstname'];
$surname = $_POST['surname'];
$passwor = $_POST['passwor'];
$email = $_POST['email'];

if (!empty($firstname) || !empty($surname) || !empty($passwor) || !empty($email))
  {
    $host = "localhost";
    $dbusername = "root";
    $dbpassword = "";
    $dbname = "registration";

    $conn = new mysqli ($host, $dbusername, $dbpassword, $dbname);
    if (mysqli_connect_error())
      {
       die ('Connect Error(' . mysqli_connect_errno().')'. mysqli_connect_error());
      }
    else
      {
        $SELECT = "SELECT email From loginas Where email = ? Limit 1";
        $INSERT = "INSERT Into loginas (`firstname`, `surname`, `passwor`, `email`) values('$firstname', '$surname', '$passwor', '$email')";

        $stmt = $conn->prepare($SELECT);
        $stmt->bind_param("s", $email);
        $stmt->execute();
        $stmt->bind_result($email);
        $stmt->store_result();
        $rnum = $stmt->num_rows;

        if ($rnum==0)
          {
            $stmt->close();

            $stmt = $conn->prepare($INSERT);
            $stmt->bind_param("ssss", $firstname, $surname, $passwor, $email);
            $stmt->execute();
            echo "Registartion sucesfull";
          }  
        else
          {
            echo "This email is already in use";    
          }
          $stmt->close();
          $conn->close();
      }
  }
else {
     echo "All fields must be filled";
     die();
  }
  • 写回答

1条回答 默认 最新

  • dongxi5423 2019-01-17 11:10
    关注

    You are preparing this statement later in yor code and passing bound parameter so it needs to be written with a ? for each parameter you are binding to it

    $INSERT = "INSERT Into loginas 
                    (`firstname`, `surname`, `passwor`, `email`) 
                values(?,?,?,?)";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度