• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

mysqli mit prepared statements => fatal error

syuam

Neues Mitglied
hier meins script, dass den login überprüfen soll:
PHP:
// Anmeldevorgang
if(isset($_POST['send']))
{
 $user_name = trim(htmlspecialchars($_POST['user_name']));
 $user_password = trim(htmlspecialchars($_POST['user_password']));
 //Benutzereingaben validieren
 if(!empty($user_name) && !empty($user_password))
 {
  $query = $SQL->prepare('SELECT `user_id` FROM `user` WHERE `user_name` = ? AND `user_password` = ?');
  $query->bind_param('ss', $_POST['user_name'], md5($_POST['user_password']));
  $query->execute();
  $query->store_result();
  $query->bind_result($user_id);
  //Sind Benutzerdaten vorhanden und korrekt?
  if($query->num_rows == 1)
  {
   $query->fetch();
   $_SESSION['user_id'] = $user_id;
   header('location: index.php');
   exit();
  }
  else
  {
   $error = 'Ihre Anmeldedaten sind nicht korrekt. Bitte wiederholen Sie Ihre Eingabe.';
   echo $error;
  }
 }
 else
 {
  $error = 'Bitte füllen Sie alle Felder korrekt aus.';
     echo $error;
 }
}
else
{
 $error = NULL;
 $user_email = NULL;
}
Nun gebe ich in mein Formular den Benutzernamen, als auch das Passwort ein und bekomme als Meldung:
Notice: Undefined variable: SQL in admin_login.php on line 33

Fatal error: Call to a member function prepare() on a non-object in admin_login.php on line 33
Nun hab ich das gegoogelt, aber ich weiß immer noch nicht, wieso meine Variable undefined ist, hier die Zeile 33:
PHP:
$query = $SQL->prepare('SELECT `user_id` FROM `user` WHERE `user_name` = ? AND `user_password` = ?');
wüsste da jmd weiter? lg
 
Werbung:
also die "undefined variable" ist ja: SQL.Aber die binde ich doch ganz am Anfang über "require_once" ein, noch vor dem "Anmeldevorgang" :
PHP:
// Script Error Reporting
 error_reporting(E_ALL);  
 ini_set('display_errors', '1');  
 // Session start
 session_start();
 define('SECURE', true);
 require_once('../storescripts/connect_to_mysql.php');
 // Abmeldevorgang
 if(isset($_GET['logout']))
 {
  if(isset($_SESSION['user_id']))
  {
   $_SESSION = array();
   session_destroy();
  }
  header('location: admin_login.php');
  exit();
 }
 // Anmeldevorgang
 if(isset($_POST['send']))
 { // hier kommt jetzt der eigentlich anmeldevorgang, den ich ja schon oben gepostet habe
daher verstehe ich wirklich nicht, woher die Fehlermeldung kommt. kann mir da jmd helfen? lg edit: die connect_to_mysql.php :
PHP:
defined('SECURE') or die('Der direkte Zugriff auf diese Datei ist nicht erlaubt!');
// DB-Zugangsdaten
$config['sql_hostname'] = '#';  //MySQL-Server
$config['sql_username'] = '#';       //Benutzername
$config['sql_password'] = '#';        //Kennwort
$config['sql_database'] = '#';          //Datenbank

// Verbindungsaufbau
$SQL = new MySQLi($config['sql_hostname'], $config['sql_username'], $config['sql_password'], $config['sql_database']);
if(mysqli_connect_errno() != 0 || !$SQL->set_charset('utf8'))
{
 die('<strong>ERROR:</strong> Es konnte keine Verbindung mit dem Datenbank-Server hergestellt werden!');
}
bitte echt um hilfe..
 
Mich würde mal interessieren, wo du die Schreibweise her hast.
PHP:
$SQL = new MySQLi(...);
Richtig:
PHP:
$SQL = new mysqli(...);
 
Werbung:
@thuemmy
Du wirst überrascht sein, was hierbei rauskommt:
PHP:
<?php

   echo "<pre>";
   
   $sql1 = new MySQLi("localhost", "root", "", "test");
   
   var_dump($sql1);
   
   echo "</pre><br /><br /><pre>";
   
   $sql2 = new mysqli("localhost", "root", "", "test");
   
   var_dump($sql2);
   
   echo "</pre>";
?>
 
komisch also ich hab den pc aus-und angeschaltet und jetzt kommen keine Fehlermeldungen, das script läuft fehlerlos..und es ist das gleiche wie oben gepostet von mir. ich habe das mir dem "mysqli" aber trotzdem überarbeitet, danke :)
 
Werbung:
Zurück
Oben