PHP警告:mysqli_stmt :: bind_param():类型定义字符串中的元素数量与绑定变量的数量不匹配

时间:2017-02-27 10:42:56

标签: php mysqli

我的问题是在登录php中,bind_param()中缺少一个参数/元素,但是我已经阅读了很多时间的代码而且我100%认为代码应该可以工作!要求学校的朋友查看代码,但即使他说代码应该有效。 问题儿童"是$ stmt - > bind_param(" ss",$ benutzername,$ password); 整个代码在

之下
<?php
session_start();

require_once "db.inc.php";
require_once "redirect.inc.php";

$benutzername ="";
$password = "";
$err_message ="";


// Es wurde auf den submit Button geklickt
if (isset($_GET['submit'])) {

if (isset($_GET['benutzername']))
{
$benutzername = $_GET['benutzername'];
}
else {
$err_message .= 'Wert für Feld Benutzername fehlt.\r\n';
}

if (isset($_GET['password']))
$password = $_GET['password'];
else
$err_message .= 'Wert für Feld Passwort fehlt.\r\n';

//trim löscht leeren string
$benutzername = trim($benutzername);
$password = trim($password);

if ($benutzername == "")
$err_message.= 'Das Feld Benutzername darf nicht leer sein.\r\n';
if ($password ==""  )
$err_message.= 'Das Feld Passwort darf nicht leer sein.\r\n';



if ($err_message =="") {

// Verbindung zur Datenbank herstellen
$conn = new mysqli($db_server, $db_user, $db_password, $db_name);

// SQL Statemet definieren

$sql = "SELECT user_benutzername, user_passwort FROM u_user WHERE user_benutzername= '?' AND user_passwort= '?'";

// Prüfen ob das Herstellen der Verbindung geklappt hat
if ($conn -> connect_error) {
trigger_error('Database connection failed: ' . $conn -> connect_error, E_USER_ERROR);
} else {
// Zeichensatz ändern wegen ö, ü, ä, ß, usw.
$conn -> set_charset("utf8");

$result = $conn->query($sql) or die($conn->error);


// Datenbankoperation definieren
if ($stmt = $conn -> prepare($sql)) {
// Variablen an ? in SQL Kommando binden
//$md1password = hash('sha256',$password);
//$md5password = md5($password);
  $stmt -> bind_param("ss", $benutzername, $password);
// Datenbankoperation ausführen
$stmt -> execute();

$result = $stmt -> get_result();

$row = $result -> fetch_assoc();

echo $row;

// Datenbank Attribute an Variablen binden
$stmt -> close();
if($benutzername == 'chef')
{
    redirect('anzeigeadmin.php');
}
if ($row=="") {
$err_message.= 'Falsche Anmeldedaten';
} else {
$_SESSION['benutzername']=$benutzername;
redirect('anzeige.php');
}

} else { 
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn -> error, E_USER_ERROR);
}
$conn -> close();
}

} else {
// Die Seite wird nochmals angezeigt, wobei der Wert von Login eingesetzt wird.
//redirect('index.html');

echo $err_message;

  }
}

?>

0 个答案:

没有答案