mysqli_stmt :: bind_param():变量数与第64行的预准备语句中的参数数量不匹配

时间:2017-04-04 15:49:01

标签: php

我想为我的程序创建一个登录脚本,但它不起作用。错误发生在bind_param上。 你能解释一下它为什么不起作用并告诉我如何做到这一点?

代码:

<?php
$username = $_GET['username'];
$key = $_GET['key'];
$hwid = $_GET['hwid'];


$istKorrekt = istKorrekterSchluessel($username, $key, $hwid);
if($istKorrekt) {
    echo 'true';
} else {
    echo 'false';
}

mysqlTrennen();


function mysqlVerbinden() {
    global $mysqlVerbindung;
$mysqlHost = "localhost";
$mysqlBenutzer = "ts3botauth";
$mysqlPasswort = "nope";
$mysqlDatenbank = "ts3botauth";
$mysqlTabelle = "ts3botauth";
$mysqlVerbindung = new mysqli($mysqlHost, $mysqlBenutzer, $mysqlPasswort, $mysqlDatenbank);

    if($mysqlVerbindung->connect_errno)
        return false;

    return true;
}

function mysqlTrennen() {
    global $mysqlVerbindung;

    $mysqlVerbindung->close();
}

function istKorrekterSchluessel($username, $key , $hwid) {
    global $mysqlVerbindung;
    $mysqlTabelle = "ts3botauth";
    $stmtPruefung = $mysqlVerbindung->prepare("SELECT EXISTS(SELECT * FROM " . $mysqlTabelle . " WHERE `Key`=? AND `Username`=? AND `HWID`=?) AS schluesselKorrekt");

    if(!$stmtPruefung) {
        return false;}  
   $stmtPruefung->bind_param("s",$username);
    $stmtPruefung->bind_param("s", $key);
    $stmtPruefung->bind_param("s", $hwid);

    $stmtPruefung->execute();

    $stmtPruefung->bind_result($schluesselKorrekt);

    $stmtPruefung->fetch();

    return ($schluesselKorrekt == 1);
}

&GT;

1 个答案:

答案 0 :(得分:2)

这不是bind_param在mysqli中的运作方式。也许你在考虑PDO?在mysqli中,你必须使用一个语句将它们全部绑定在一起。

$stmtPruefung->bind_param("sss",$username, $key, $hwid);

第64行将是$stmtPruefung->bind_param("s",$username);,你得到的那个&#34;变量数量不匹配&#34;错误,因为它期待所有这三个,并且你给它一个。