Query in Query

GoldenEye

Erfahrenes Mitglied
Hi,

ich habe versucht eine Query in eine Query zu setztem also so:

PHP:
mysql_query ("INSERT INTO mybb_posts (subject,message,username,fid) values ('" . $_POST['head'] . "','" . $_POST['data'] . "','" . $_POST['user'] . "',SELECT FROM mybb_threads WHERE subject = '" . $_POST['head'] . "')");

aber es geht irgendwie nicht.

also in "fid" sollen die Datein, die meine SELECT Abfrage auspuckt eingetragen werden.

gruß
 
Also ich hab das jetzt so gemacht:

PHP:
mysql_query ("INSERT INTO mybb_posts (subject,message,username,fid) values ('" . $_POST['head'] . "','" . $_POST['data'] . "','" . $_POST['user'] . "',SELECT tid FROM mybb_threads WHERE subject = '" . $_POST['head'] . "')");

leider geht es aber immer noch nicht.

ich zeig euch am besten mal das komplette script:

PHP:
<?php
		error_reporting(E_ALL);
		include 'config1.php';

		@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
		mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
?>
<p>

New Thread

<form action="thread.php" method="post">


<select name="user">
<?php

    $sql = "SELECT
		username
            FROM
                mybb_users
            ORDER BY
                uid ASC;";
    
    $result = mysql_query($sql) OR die(mysql_error());


while($row = mysql_fetch_assoc($result)) {
      echo "<option>" . $row['username'] . "</option>";
    }        


?>
</select>
	<input type="text" name="head"/>
<br/><textarea name="data" rows="10" cols="50"></textarea><br/>

<?php

    $sql = "SELECT
		name,
		fid
            FROM
                mybb_forums
            ORDER BY
                fid ASC;";
    
    $result = mysql_query($sql) OR die(mysql_error());


while($row = mysql_fetch_assoc($result)) {
      echo "<p>" . $row['name'] . "<input type=\"radio\" name=\"bla\" value=\"" . $row['fid'] . "\" /></p>";
    }        


?>
<br/>

	<br/><input type="submit" value="Eintragen"/>
	<input type="reset" value="Verwerfen"/>
</form>


<?php

$sql = "SELECT
		fid
            FROM
                mybb_forums
            WHERE
                name = '" . $_POST['forums'] . "';";
    
    $result = mysql_query($sql) OR die(mysql_error());

    if(empty($_POST['data'])) {
        echo "Bitte füllen sie alles sorgfälltig aus.";
	break;
    }

mysql_query ("INSERT INTO mybb_threads (subject,username,fid) values ('" . $_POST['head'] . "','" . $_POST['user'] . "','" . $_POST['bla'] . "')");
mysql_query ("INSERT INTO mybb_posts (subject,message,username,fid) values ('" . $_POST['head'] . "','" . $_POST['data'] . "','" . $_POST['user'] . "',SELECT tid FROM mybb_threads WHERE subject = '" . $_POST['head'] . "')");
 echo " Ihre Anfrage konnte erfolgreich ausgeführt werden.";

?>

Also am Ende habe ich halt zwei Query, die einmal einen Eintrag in die Datenbank mybb_threads und in mybb_posts machen sollen.

EDIT: der Eintrag in mybb_threads wir gemacht, der andere nicht.

gruß
 
Zuletzt bearbeitet:
Hallo,

sollte in die Tabelle mybb_posts nicht die ID des zugehörigen Threads tid eingetragen werden? Momentan steht in deinem letzten Query ja fid.

Außerdem erhält man die letzte automatisch vergebene ID auch mittels [phpf]mysql_insert_id[/phpf].

Grüße,
Matthias
 
Matthias Reitinger hat gesagt.:
Hallo,

sollte in die Tabelle mybb_posts nicht die ID des zugehörigen Threads tid eingetragen werden? Momentan steht in deinem letzten Query ja fid.

Außerdem erhält man die letzte automatisch vergebene ID auch mittels [phpf]mysql_insert_id[/phpf].

Grüße,
Matthias


das mit dem tid hab ich schon verbessert, geht aber auch net.

so jetzt sieht das ganze so bei mir aus:
PHP:
mysql_query ("INSERT INTO mybb_posts (subject,message,username,tid) values ('" . $_POST['head'] . "','" . $_POST['data'] . "','" . $_POST['user'] . "',mysql_insert_id())");

geht aber wieder nicht. Wenn ich den den Eintrag von tid und mysql_insert_id() weglass gehts, aber so nicht.

gruß
 
Hallo,

[phpf]mysql_insert_id[/phpf] ist eine PHP-Funktion, keine MySQL-Funktion. Die entsprechende MySQL-Funktion wäre LAST_INSERT_ID().

Grüße,
Matthias
 
Matthias Reitinger hat gesagt.:
Hallo,

[phpf]mysql_insert_id[/phpf] ist eine PHP-Funktion, keine MySQL-Funktion. Die entsprechende MySQL-Funktion wäre LAST_INSERT_ID().

Grüße,
Matthias

Hi, ja danke so gehts. super.

Jetzt würde ich allerdings gerne wissen, wieso die Query in der Query nicht geht, da ich das noch für was andres bräuchte.

Und zwar oben beim dem <select name="user"> wird der Name aus der DB ausgelsesen und wenn der selektiert wurde in der entsprechenden Tabelle gespeichert. jetzt müsste allerdings auch nocht die ID (uid) des entsprechenden Users in der Tabellle gespeichert werden. Also beim mybb_threads muss einerseits "name" und andererseits "uid" rein.

gruß
 
Zuletzt bearbeitet:
Probier mal Folgendes:
PHP:
$query = '
	INSERT INTO
	  `mybb_posts` (
	    `subject`,
	    `message`,
	    `username`,
	    `fid`
	  )
	  VALUES (
	    "'.mysql_real_escape_string($_POST['head']).'",
	    "'.mysql_real_escape_string($_POST['data']).'",
	    "'.mysql_real_escape_string($_POST['user']).'",
	    SELECT MAX(`tid`) FROM `mybb_threads`
	  )
	';
 
Zurück