PHP/MySQL Problem

Alles, was PHP betrifft, kann hier besprochen werden.

PHP/MySQL Problem

Postby mayangel » 11. October 2005 16:45

Hallo,

ich hoffe ihr könnt mir helfen. Ich mache gerade meine ersten Versuche mit php und möchte aus meiner Datenbank die Spaltennamen ausgeben.
Mein Skript läuft mit meiner Testdatenbank einwandfrei aber mit der richtigen Datenbank kommt direkt die Meldung Die Anfrage ist fehlgeschlagen. Kann es sein das meine Datenbank den Rahmen der Variable $klon sprengt? Gibt es für Skalarvariablen eine Größenbeschränkung? Hoffe von euch hat einer eine Idee, denn meine Datenbank ist mit 10000Datensätzen in 23Colums ja auch nicht so riesig.
Danke schon mal im Vorfeld.

Code: Select all
<?php
if($action=="suche")
{


$klon = mysql_db_query($database, "SELECT * FROM join");
if (!$klon) die("Die Anfrage ist fehl geschlagen !");
$anzahlspalten=mysql_num_fields($klon);

$anzahlspalten=$anzahlspalten-1;
?>
<select name="select">
<?php
for($i=0;$i<=$anzahlspalten;$i++)

{$zeile =mysql_field_name($klon, $i);

?>


<option><?php echo $zeile; ?></option>
<?php
}




?>
mayangel
 
Posts: 9
Joined: 10. August 2005 16:10

Postby Wiedmann » 11. October 2005 17:25

if (!$klon) die("Die Anfrage ist fehl geschlagen !");

Das ist ja auch etwas dürftig um einen Fehler zu erkennen. Warum nimmt hier kein Mensch mysql_error()?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby mayangel » 12. October 2005 08:26

Danke für den Tip. Hab den Fehler auch direkt gefunden. MySQL mag es nicht wenn man Tabellen join nennt. Ist evlt. eine reservierte Variable.
mayangel
 
Posts: 9
Joined: 10. August 2005 16:10

Postby jakimo72 » 12. October 2005 09:30

Unter SQL kann man eine Datenbank nennen wie man will,
auch Spalten kann man beliebig benennen,
nur sollte man vorsichtig mit reservierten Wörtern von SQL oder
mit Namen, die Leerzeichen enthalten, die muss man in doppelte
Anführungsstriche setzten. (Zusätzlich läßt MySQL noch die
einfachen schrägen Anführungsstriche ` zu)

Wenn man also eine Tabelle "Hans im Glück" nennen möchte
kann man dann
CREATE TABLE "Hans im Glück" (
"join" VARCHAR( 50 ) NOT NULL ,
"AVG(count)" INT NOT NULL ,
"ä und ö" INT NOT NULL
)

Ich habe mich schon ziemlich an die Schreibweise mit den
Anführungsstrichen gewöhnt, dann hat man weniger
Probleme.

P.S. ich weiss nicht genau, die das mit Unicode-namen und
verschiedenen Datenbanken ist, hat jemand Erfahrung z.B. mit
kyrillischen Tabellennamen und verschiedenen Datenbanken?
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek

Postby jakimo72 » 12. October 2005 09:35

P.P.S.
ich habe gerade ausprobiert, MySQL mag lieber die
schrägen einfachen Anführungsstriche ` (accent de grave).
Oracle kann aber mit eben diesen diesen nichts anfangen...
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek

Postby Wiedmann » 12. October 2005 12:28

jakimo72 wrote:nur sollte man vorsichtig mit reservierten Wörtern von SQL oder mit Namen, die Leerzeichen enthalten, die muss man in doppelte
Anführungsstriche setzten. (Zusätzlich läßt MySQL noch die
einfachen schrägen Anführungsstriche ` zu)

Das ist was MySQL angeht nicht ganz korrekt. Bei MySQL werden Bezeichner immer mit dem Backtick '`' gequotet. Zusätzlich kennt MySQL, aber nur bei entsprechender Konfiguration, hier auch den Doublequote '"'. Siehe:
http://dev.mysql.com/doc/mysql/en/legal-names.html

jakimo72 wrote:Ich habe mich schon ziemlich an die Schreibweise mit den
Anführungsstrichen gewöhnt, dann hat man weniger
Probleme.

Da muss ich dir rechtgeben. Man sollte dieses Quoting immer benutzen. Auch wenn ein Bezeichner heute kein reserviertes Wort sein muss, kann das morgen schon wieder ganz anders aussehen.

jakimo72 wrote:P.S. ich weiss nicht genau, die das mit Unicode-namen und
verschiedenen Datenbanken ist,

Wenn es das Dateisystem zulässt...

mayangel wrote:Ist evlt. eine reservierte Variable.

http://dev.mysql.com/doc/mysql/en/reserved-words.html
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 6 guests