[php] mysql_query() liefert FALSE

wurzelsepp

Ensign
Dabei seit
Jan. 2005
Beiträge
217
tagchen!

hab n kleines problem.
Code:
$host     = "localhost";                       
$user     = "user";                       
$pass     = "";                       
$database = "database";                                          

mysql_connect($host, $user, $pass);
//^^ funktioniert...

//datenbank-tabelle anlegen
$q_create = "CREATE TABLE blabla(
                         diesunddas_id INT,
			 lalala VARCHAR(..),
			...
			 )";	 

mysql_query($q_create);		
if(!mysql_query($q_create)) { print '<br/>FEHLER! datenbanktabelle konnte nicht erstellt werden...'; }

so. das liefert mir jetz jedesmall die nach der if-klausel angegebene fehlermeldung. jetz kommt aber das aber ;)

der folgende code in ner anderen datei verpackt
Code:
mysql_connect($host, $user, $pass);

$result = mysql_list_tables($database);
$num_rows = mysql_num_rows($result);
for ($i = 0; $i < $num_rows; $i++) {
   echo "Table: ";
   echo mysql_tablename($result, $i);
   echo "<br/>";
}

mysql_free_result($result);
zeigt mir aber grad die angelegte tabelle an!!

dh: warum bekomm ich dann als rückgabewert ein FALSE, obwohl ganz offensichtlich ein TRUE sein müsste?! zumindest laut http://de.php.net/manual/de/function.mysql-query.php

hab ich was falsch verstanden?
was falsch gemacht?
oder woran liegts?
 

bbforce

Ensign
Dabei seit
Sep. 2003
Beiträge
216
Re: [php] mysql_query() liefert FALSE - ??

Moin,

so wie dein Script im Moment arbeitet versuchst du das anlegen der Tabelle 2 mal durchzuführen ( auch das !mysql_query in der if Bedingung wird ausgeführt, und dann existiert die Tabelle ja schon) , probier mal folgendes:

PHP:
$host     = "localhost";                       
$user     = "user";                       
$pass     = "";                       
$database = "database";                                          

mysql_connect($host, $user, $pass);
//^^ funktioniert...

//datenbank-tabelle anlegen
$q_create = "CREATE TABLE blabla(
                         diesunddas_id INT,
			 lalala VARCHAR(..),
			...
			 )";	 

// mysql_query($q_create);		
if(!mysql_query($q_create)) { print '<br/>FEHLER! datenbanktabelle konnte nicht erstellt werden...'; }

Gruß bbforce
 

wurzelsepp

Ensign
Ersteller dieses Themas
Dabei seit
Jan. 2005
Beiträge
217
Re: [php] mysql_query() liefert FALSE - ??

ahhh! verstehe... jetz wird mir klar, warum das nicht funktioniert hat. dachte nicht, dass es dann innerhalb der if-klausel nochmal ausgeführt wird - ich wollte ja nur den rückgabewert ;)

hmm. könntest du mir vielleicht noch n tipp geben, wie ich am einfachsten n paar daten einfüg in die neu-erstellte tabelle und die dann wieder ausgeb, um zu sehen, obs auch tatsächlich funktioniert hat. nur das prinzip ganz kurz...

da wär mir viel geholfen!

thx auf jeden fall!
 

bbforce

Ensign
Dabei seit
Sep. 2003
Beiträge
216
Re: [php] mysql_query() liefert FALSE - ??

Also das einfügen geht ja sehr einfach über z.b.:

$insert = mysql_query("insert into namedertabelle (spalte1,spalte2,spalte3) values ('$var1','$var2','$var3')");

die Abfrage kannste über ein assoziatives array machen, d.h. der Index des Arrays ist keine Zahl sondern in dem Fall der Name der Tabellenspalte z.b:
PHP:
$getinfo = mysql_query("select * from tabellenname") or die(mysql_error()); 
	if (mysql_num_rows($getinfo) == '0')
	{
		?><p align="center">Keine Eintr&auml;ge vorhanden!</p><?
	}
	else
	{ 
	    while ($arraydet = mysql_fetch_array($getinfo))
               {             
                echo $arraydet[tabellenspaltenname1]; 
               }
        }

wobei tabellenspaltenname1 quasi der name der 1. spalte deiner tabelle ist, du kannst alle weiteren ausgeben mit $arraydet[tabellenspaltennamexyz]....

Edit: Mal ein konkretes Beispiel:

deine Tabelle heist benutzer und hat die spalten name, vorname und alter, dann kannst du die einzelnen datensaetze zeilenweise ausgeben mit:

PHP:
$getinfo = mysql_query("select * from benutzer") or die(mysql_error()); 
	if (mysql_num_rows($getinfo) == '0')
	{
		?><p align="center">Keine Eintr&auml;ge vorhanden!</p><?
	}
	else
	{ 
	    while ($arraydet = mysql_fetch_array($getinfo))
               {             
                echo $arraydet[name]."-".$arraydet[vorname]."-".$arraydet[alter]."<br>"; 
               }
        }

Gruß bbforce
 
Zuletzt bearbeitet:

wurzelsepp

Ensign
Ersteller dieses Themas
Dabei seit
Jan. 2005
Beiträge
217
ahh ja!

vielen dank... habs n bisschen modifiziert - es funktioniert. vielen dank!

ein kleines problem ergibt sich allerdings noch daraus, dass ich jetz quasi bei jedem aufruf alles nochmal einfüge und von daher den doppelten bzw dreifachen usw gleichen inhalt habe - das muss ich noch irgendwie lösen... [ wie mach ich das denn am besten...?! ]

aber das is nicht soo das problem ;)

danke dir jedenfalls!!
 

bbforce

Ensign
Dabei seit
Sep. 2003
Beiträge
216
Hi,

du kannst da z.B. vorher eine Abfrage machen ob z.b. schon eine Person mit dem Namen XY existiert bzw mit einer eindeutigen Nummer, falls dies nicht so ist dann kann ein neuer Datensatz eingefügt werden, ansonsten nicht...

Gruß bbforce
 
Top