PHP Fehler bei logischen Operatoren

selberbauer

Captain
Registriert
Juni 2009
Beiträge
3.604
Hallo,
Ich bekomme immer einen PHP Fehler, wenn ich logische Operatoren wie OR, AND oder XOR benutze, ich kann alelerdings nicht nachvollziehen wieso.

Was habe ich falsch gemacht?
PHP:
<?php

 $username = $_POST["username"];
 $password = $_POST["password"];
 $connection = mysql_connect("localhost", $username, $password)
  or die("Authentifizierung gescheitert: " . mysql_error());
  
 $create_db = CREATE DATABASE "Kontakte";
  mysql_query($create_db)
  or die("Anfrage gescheitert: " . mysql_error());

 
?>
 
Welche Fehlermeldung kommt denn genau?

Das Einzige, was mir an dem Code auffällt, ist, daß die Zuweisung an $create_db nicht richtig ist - es müßte heißen:

PHP:
$create_db = "CREATE DATABASE Kontakte";
 
Ja, das wars! Danke.

Jetzt sagt PHP nur noch folgendes:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Kontakte'' at line 1

Fehler gefunden, man muss die Connection Variable noch an mysql_query weitergeben
PHP:
$create_db = 'CREATE DATABASE Kontakte';
  mysql_query($create_db, $connection)
   or die('Anfrage gescheitert: ' . mysql_error());
 
Zuletzt bearbeitet:
Lass mal die einfachen Anführungszeichen bei Kontakte weg.
edit: so wie es Nullpointer btw auch schon notiert hat
 
Problem wurde schon behoben, man muss die Verbindungsdaten immer an mysql_query weitergeben.

Gibt jetzt noch einen Fehler bei der Fehlerausgabe mit echo
PHP:
<?php

 $username = $_POST['username'];
 $password = $_POST['password'];
 $connection = mysql_connect('localhost', $username, $password)
  or die('Authentifizierung gescheitert: <br> ' . mysql_error());


  
 $create_db = 'CREATE DATABASE Kontakte';
  mysql_query($create_db, $connection)
   or echo 'Anfrage gescheitert:<br>' . mysql_error();

 $mysql_select_db('Kontakte', $connection)
  or echo 'Auswahl der Datenbank gescheitert:<br>' . mysql_error();
  
 $create_table = "
 CREATE TABLE 'Adressen' (
 	'id' INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
 	'Nachname' VARCHAR(150) NOT NULL,
 	'Vorname' VARCHAR(150) NULL,
 	'Strasse' VARCHAR(2) NOT NULL,
 	'PLZ' INT(5) NOT NULL,
 	'Stadt' VARCHAR(20) NULL,
 	'Telefon' VARCHAR(20) NULL,
 	'Mobil' VARCHAR(20) NULL,
 	'Mail' VARCHAR(20) NULL
 ) ENGINE = INNODB;
 ";
 
 mysql_query($create_table, $connection)
  or echo 'Anfrage gescheitert:<br>' . mysql_error();
?>
 
selberbauer schrieb:
Problem wurde schon behoben, man muss die Verbindungsdaten immer an mysql_query weitergeben.
http://de3.php.net/manual/de/function.mysql-query.php
mysql_query() sendet eine Anfrage an die zur Zeit aktiven Datenbank, die mit der angegebenen Verbindungs-Kennung assoziiert wird. Wird die Verbindungs-Kennung nicht angegeben, wird die zuletzt geöffnete Verbindung angenommen. Wenn keine offene Verbindung besteht, wird versucht eine Verbindung aufzubauen, wie beim Aufruf von mysql_connect() ohne Argumente und diese wird dann benutzt.
 
selberbauer schrieb:
Problem wurde schon behoben, man muss die Verbindungsdaten immer an mysql_query weitergeben.

Gibt jetzt noch einen Fehler bei der Fehlerausgabe mit echo
PHP:
<?php

 $username = $_POST['username'];
 $password = $_POST['password'];
 $connection = mysql_connect('localhost', $username, $password)
  or die('Authentifizierung gescheitert: <br> ' . mysql_error());


  
 $create_db = 'CREATE DATABASE Kontakte';
  mysql_query($create_db, $connection)
   or echo 'Anfrage gescheitert:<br>' . mysql_error();

 $mysql_select_db('Kontakte', $connection)
  or echo 'Auswahl der Datenbank gescheitert:<br>' . mysql_error();
  
 $create_table = "
 CREATE TABLE 'Adressen' (
 	'id' INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
 	'Nachname' VARCHAR(150) NOT NULL,
 	'Vorname' VARCHAR(150) NULL,
 	'Strasse' VARCHAR(2) NOT NULL,
 	'PLZ' INT(5) NOT NULL,
 	'Stadt' VARCHAR(20) NULL,
 	'Telefon' VARCHAR(20) NULL,
 	'Mobil' VARCHAR(20) NULL,
 	'Mail' VARCHAR(20) NULL
 ) ENGINE = INNODB;
 ";
 
 mysql_query($create_table, $connection)
  or echo 'Anfrage gescheitert:<br>' . mysql_error();
?>

was denn für ein Fehler ?_?

jedenfalls würde ich sagen das
Code:
 $mysql_select_db('Kontakte', $connection)

durch
Code:
 mysql_select_db('Kontakte', $connection)
zu ersetzen wäre

abgesehen davon, natürlich gibt es ein problem wenn du bei einem Fehler nur sagst das es einen Fehler gab...

Der nachfolgende Code wird ja trotzdem abgearbeitet, also würdest du irgendweann eine Kette von fehlern bekommen. Najakommtauf die Konfiiguration an aber eine genauere angabe was denn der fehler ist wäre Hilfreich.

Ansonsten sollte das Script jedoch kontrolliert terminieren und nicht weiter mit der DB rum handtieren wenn z.b. schon die auswahl der DB fehlgeschlagen ist
 
Zuletzt bearbeitet:
echo ist keine Funktion, sondern ein spezielles Sprachkonstrukt von PHP, und kann deshalb nicht mit "or" benutzt werden. Ersetze es durch print() oder die(), je nachdem, ob du das Skript abbrechen willst oder nicht.
 
Zurück
Oben