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

Einfaches Insert funktioniert nicht: Table doesn't exist

aJunkie

Mitglied
Hallo,

das ist echt komisch und eigentlich ja einfach. Nur sehe ich es nicht.

PHP:
// Datenbankverbindung
$connect     =     mysql_connect("localhost","root")     or die('Keine Verbindung zur Datenbank. Fehler: <b>'.mysql_error().'</b>');
$db_select    =    mysql_select_db("test", $connect)     or die('Keine Datenbankauswahl. Fehler: <b>'.mysql_error().'</b>');

if(isset($_POST['submit']) && $_POST['neuesvideo'] != '') {
    $query = mysql_query("INSERT INTO youtube (videoid) VALUES('".mysql_real_escape_string($_POST['neuesvideo'])."')") or die("Fehlgeschlagen: <b>".mysql_error()."</b>");
} elseif(isset($_POST['submit']) && $_POST['neuesvideo'] == '') {
    echo '<p class="red">VideoID fehlt!</p>';
}

Der Fehler ist:
Table '01.youtube' doesn't exist

Meine Tabelle heißt youtube, wie es da geschrieben steht. Der hängt, egal, wie ich es maskiere oder umbenenne vor dem Tabellennamen noch "01." an.
 
Hmm.
Du könntest probieren den Datenbank Namen mit
Code:
`datenbank`.
noch vor Youtube zu setzen.

mfg furien
 
Ja, aber man kann theoretisch auch mehrere DBs connecten und da muss er ja wissen,
welche man anwählt.
 
Du könntest testweise bei mysql_query und mysql_real_escape_string als zweiten Parameter noch die Connection-ID (also $connect) übergeben. Aber eigentlich ist das nicht notwendig, wenn du im Script nur eine einzige DB-Verbindung öffnest, und auch mysql_select_db sollte funktionieren. Ich kann mir gerade nicht erklären, woher die "01" kommt.
 
In meiner Testumgebung habe ich tatsächlich noch eine Datenbank names "01".

Das ist der gesamte Script:

PHP:
<?php
session_start();

// Logout
if(isset($_GET['logout'])) {
    session_destroy();
    header('Location: index.php'); ###
}

// Datenbankverbindung
$connect     =     mysql_connect("localhost","root")     or die('Keine Verbindung zur Datenbank. Fehler: <b>'.mysql_error().'</b>');
$db_select    =    mysql_select_db("test", $connect)     or die('Keine Datenbankauswahl. Fehler: <b>'.mysql_error().'</b>');

?>
<ul id="horizmenue">
<li><a href="?uebersicht">Übersicht</a></li>
<li><a href="?eintragen">Video hinzufügen</a></li>
<li><a href="?logout">Logout</a></li>
</ul>
<h1>Youtube</h1>
<?php if(isset($_GET['eintragen'])) { 
if(isset($_POST['submit']) && $_POST['neuesvideo'] != '') {
    $query = mysql_query("INSERT INTO `test`.youtube (videoid) VALUES('".mysql_real_escape_string($_POST['neuesvideo'])."')") or die("Fehlgeschlagen: <b>".mysql_error()."</b>");
} elseif(isset($_POST['submit']) && $_POST['neuesvideo'] == '') {
    echo '<p class="red">VideoID fehlt!</p>';
}
?>
    <h2>Video hinzufügen</h2>
    <form action="" method="post">
       <blockquote>Neues Video (ID):</blockquote>
    <blockquote><input type="text" name="neuesvideo" maxlength="20"> <span class="ten">Format: http://youtube.com/v=<b>ID</b></span></blockquote>
    <input type="submit" name="submit" value="Hinzufügen">
    </form>
<?php } ?>
 
Ich hatte das selbe Problem.
Die erste Lösung war, bei mysql_connect als dritten Parameter "" (leerer String) einzugeben.
Die zweite Lösung (für mich die beste), auf MySQLi umsteigen (wirst du sowieso machen müssen, denn PHP5.3 macht schon Probleme mit mysql.
Die dritte Lösung, $connect bei jedem mysql_*-Aufruf mitzugeben.

PS: Wenn du header('Location') machst, gib den vollen Weg an (http://domain.de/datei.php) und mach ein die() sofort danach rein.
 
Hallo Asterixus,

deine dritte Lösung klappte auf Anhieb beim INSERT INTO, allerdings nicht beim SELECT *.
Deine erste Lösung habe ich auch schon probiert.

PS. Wegen dem header: Ist das gängig so? Ich dachte, wenn ich es so mache, ist es noch relativ, falls ich den Pfad doch noch ändern sollte.
 
Relative Pfade funktionieren zwar in den meisten Browsern, aber die HTTP-Norm sieht das nicht vor. Sie sieht einen vollen Pfad vor.

Es ist aber seltsam, dass das nicht funktioniert mit dem mysql_connect.
Ist es möglich, dass du eine Art persistente Verbindung zur Datenbank hast, also nicht mysql_connect machen musst um dich mit MySQL zu verbinden? Hol das mal raus und teste mal, ob das funktioniert.
 
Zurück
Oben