Willkommen in der Webstatt
User-1 am 26.05.06 22:51

<?php
$topic_id = $_GET['topic_id'];
$query2 = mysql_query("SELECT * FROM `posts` WHERE `topic_id` = '$topic_id'");
$row2 = mysql_fetch_object($query2);
$query = mysql_query("SELECT * FROM `topics` WHERE `topic_id` = '$topic_id'");
while($row=mysql_fetch_object($query)) {
echo
'<tr>
<td></td>
<td>'.$row2->post_text.'</td>
</tr>
';
}
?>



und diese Fehlermeldung:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\Programme\xampp\htdocs\webdesign\forum_langsam\forum\view_topic.php on line 9

Man möge es mir verzeihen aber mir fehlt anscheinend derzeit der Blick fürs offensichtliche oder so. Ich weiß aufjeden fall nicht warum das nun falsch ist...

vielleicht könnt ihr mir ja dazu was sagen...

danke
mfg Alex

netcup.de Warum gibt es hier Werbung?
User-2 am 26.05.06 22:56

$query2 = mysql_query("SELECT * FROM `posts` WHERE `topic_id` = '$topic_id'") or die(mysql_error());
?

Und das selbe noch beim Zweiten Query.

Achja, bevor ichs vergess:

$topic_id = mysql_real_escape_string(stripslashes($_GET['topic_id']));

EDIT: mysql_fetch_assoc() wäre leistungsfähiger als mysql_fetch_object() ;)

User-3 am 26.05.06 22:56

probiers mal so:

<?php
$topic_id = $_GET['topic_id'];
$query2 = mysql_query("SELECT * FROM `posts` WHERE `topic_id` = '".$topic_id."'");
$row2 = mysql_fetch_object($query2);
$query = mysql_query("SELECT * FROM `topics` WHERE `topic_id` = '".$topic_id."'");
while($row=mysql_fetch_object($query)) {
echo
'<tr>
<td></td>
<td>'.$row2->post_text.'</td>
</tr>
';
}
?>

User-1 am 26.05.06 22:58

Quote
Original von xyz-52
probiers mal so:

<?php
$topic_id = $_GET['topic_id'];
$query2 = mysql_query("SELECT * FROM `posts` WHERE `topic_id` = '".$topic_id."'");
$row2 = mysql_fetch_object($query2);
$query = mysql_query("SELECT * FROM `topics` WHERE `topic_id` = '".$topic_id."'");
while($row=mysql_fetch_object($query)) {
echo
'<tr>
<td></td>
<td>'.$row2->post_text.'</td>
</tr>
';
}
?>



Geht leider nicht....

Ähm und joa so Sachen wie injektions aussperren etc. muss ich noch machen, ich will nur erstmal den grundcode fertig haben udn dann den ganzen kram absichern und überarbeiten.


edit:// Oh nein wie doof, man sollte Felder, die man anspricht auch immer vorher erstellen. Das kommt davon wenn man 10000 Browser-Fenster gleichzeitig offen hat :D

User-4 am 26.05.06 22:59

@xyz-52 daran liegt es sicher nicht.

Ich finde es immer hilfreich, das Query einfach mal mit print ausgeben zu lassen, dann sieht man Fehler meist direkt.
Also einfach print "SELECT * FROM `posts` WHERE `topic_id` = '$topic_id'";

Ansonsten die üblichen Fragen: Gibt es das Feld in der entsprechenden Tabelle (welches der beiden Queries schlägt denn fehl?)

xyz-141el

User-2 am 26.05.06 22:59

$query2 = mysql_query("SELECT * FROM `posts` WHERE `topic_id` = '$topic_id'") or die(mysql_error());
?

(Nochmal...)

Wird da was ausgegeben? Wenn nicht das gleiche beim 2ten Query machen.

User-3 am 26.05.06 23:01

kann es sein das topic_id in der MySql-Tabelle als Integer (int) festgelegt ist? dann musst dus mal so probieren:
mysql_query("SELECT * FROM `posts` WHERE `topic_id` = ".$topic_id."");

User-1 am 26.05.06 23:02

Es war einfach ein absolut peinlicher Fehler, ich habe die Tabelle lokal exportiert und dann auf meinem server importiert. Dabei habe ich nicht gemerkt, dass er bestimmt Felder (u.a. topic_id) nicht erstellt hat.

danke für eure Hilfe.

mfg Alex

User-5 am 26.05.06 23:26

xyz-52, nur am Rande: Man kann alle Werte mit Anführungszeichen maskieren, bei Integern ist dies aber nur nicht nötig. Verboten ist es nicht. ;)

User-3 am 26.05.06 23:29

echt? ich hab mal extrem lang nach einem Fehler gesucht und ich hab ihn einfach nicht gefunden, bis ich mal die ' vor der Zahl weggemacht habe und dann liefs:D?!! aber egal

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt