2017-05-01 11 views
0

Ich habe 2 Tabellen (Künstler, CD) und ich versuche, das Ergebnis der ersten Abfrage zu verwenden, die eine artID zurückgibt und es gleich macht Die ArtID in der 2. Tabelle (cd), wo artID ein Fremdschlüssel ist, aber ich bin nicht sicher, wie es geht. Jede Hilfe wäre willkommen.Wie man das Ergebnis einer Abfrage in einer anderen Abfrage verwendet (PHP/MySQL)

$strqueryID="SELECT artID FROM artist WHERE artName= '" . $_POST["category"] . "' "; 
$resultsID=mysql_query ($strqueryID) or die(mysql_error()); 

$strqueryCD="INSERT INTO cd SET cdTitle='" . $_POST['title'] . "', artID='" . ??? . "' cdPrice='" . $_POST['price'] . "', cdGenre='" . $_POST['genre'] . "', cdNumTracks='" . $_POST['tracks'] . "'"; 
$resultsCD=mysql_query ($strqueryCD) or die(mysql_error()); 
+0

** Die 'mysql' PHP-Erweiterung ist tot ** - Stoppen Sie mit der [' mysql' PHP-Erweiterung] (http://php.net/manual/en/function.mysql-connect.php). Es ist alt, seit PHP 5.5 veraltet und in PHP 7.0 vollständig entfernt. Benutze ['mysqli'] (http://php.net/manual/de/book.mysqli.php) oder [' PDO_mysql'] (http://php.net/manual/en/ref.pdo-mysql. php) statt. – axiac

+0

Danke für die heads-up, aber ich bin mir bewusst, dass mysql_query veraltet ist. – loxi95

+0

Was gibt die '$ resultsID' zurück? –

Antwort

1

Sie können eine einzelne Abfrage verwenden, wie folgt aus:

$strqueryCD=" 
INSERT INTO cd (cdTitle, artID, cdPrice, cdGenre, cdNumTracks) 
VALUES(
    '" . $_POST['title'] . "', 
    (SELECT artID FROM artist WHERE artName= '" . $_POST["category"] . "'), 
    '" . $_POST['price'] . "', 
    '" . $_POST['genre'] . "', 
    '" . $_POST['tracks'] . "') 
"; 

auch, google 'SQL-Injection', bevor Sie

0

Also, weiterhin erste erste, was ist - Sie sollten nicht mysql_* verwenden Funktionen jetzt im Jahr 2017. Ich meine, wirklich - sie sind tatsächlich sogar in späteren Versionen von PHP (7.0+) entfernt. Weitere Informationen finden Sie unter this StackOverflow post.

Jetzt für Ihre Frage zur Hand. Angesichts der Tatsache, dass Sie nach einem gegebenen artID gesucht haben, müssen Sie zuerst die tatsächlichen "Zeilen" von der $resultsID Variable erhalten. In diesem Beispiel werden wir es in einer typischen while Schleife tun:

while ($row = mysql_fetch_assoc($resultsID)) { 
    $strqueryCD="INSERT INTO cd SET cdTitle='" . $_POST['title'] . "', artID='" . $row['artID'] . "' cdPrice='" . $_POST['price'] . "', cdGenre='" . $_POST['genre'] . "', cdNumTracks='" . $_POST['tracks'] . "'"; 
    $resultsCD=mysql_query ($strqueryCD) or die(mysql_error()); 
} 

Das soll jetzt Schleife über die artID s, die Sie in Ihrer ersten Abfrage und verwenden Sie sie in dem nachfolgenden Einsatz gefunden haben (s).

-

Haftungsausschluss: Ich habe die Tatsache außer Acht gelassen, dass Benutzereingaben direkt in die selbst Abfrage übergeben werden, wie es für diesen Beitrag „out of scope“ einfach zu viel ist.

Verwandte Themen