Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

imokcan

Grünschnabel
Hallo,

ich schreibe zur Zeit an einer Shoutbox mit Datenbankanbindung.

Hierbei tritt o.g. Fehler auf, betreffend die Zeile 52.

Ich danke für Hilfe,

Markus

PHP:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Shoutbox</title>
<?php
$name = $_POST["name"];
$schrei = $_POST["schrei"];
$name = str_replace ("\n"," ", $name);
$name = str_replace ("<", " ", $name);
$name = str_replace (">", " ", $name);
$name = stripslashes ($name);
?>
<?php
	
    if( isset($_POST['submit']) ) {

        $db = mysql_connect('localhost', 'db', 'pw');
        mysql_select_db('tab, $db);
		$sql = "SELECT * FROM shoutbox
ORDER BY time ASC
LIMIT 0 , 30";
		$ausgabe = mysql_query($sql);
		$query = '
            INSERT INTO
                    `shoutbox`
              SET
                    `time` = "'.time().'"
					`name`  = "'.mysql_real_escape_string($_POST['name']).'",
                    `schrei` = "'.mysql_real_escape_string($_POST['schrei']).'",
            ';
			}
			?>
		
	</head>
	<table>
		<tr>
			<td>
	<form name="shoutbox" action="shoutbox.php" method="post">
<p>Name:&nbsp;
<input type="text" name="name" class=textfeld size="15" maxlength="20" value="<? echo $name; ?>" />
Schrei:&nbsp;
<input type="text" name="message" class=textfeld size="50" maxlength="255" />
<input type="submit" value="Schrei!" class="button" />
</form>
			</td>
		</tr>
		<tr>
			<td>
			<table width="100%" border="0" cellspacing="1" cellpadding="1">
			<?php
			while($zeile = mysql_fetch_array($ausgabe)){
              print("<tr><td><i>".$zeile["name"]."</i>&nbsp;schrie am");
              print($zeile["time"]);
              print($zeile["schrei"]."</td></tr>");
			  }
          ?>
            </table>
	</td>
</tr>
</table>
</body>
</html>
 
Re: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resou

Hi, hier mal eine Liste mit Dingen die mir aufgefallen sind:
  1. bei mysql_select_db() fehlt ein '
  2. die Datenbankverbindung wird nur aufgebaut wenn $_POST['submit'] gesetzt ist, das gleiche gilt fuer mysql_query() welches die Grundlage fuer Dein mysql_fetch_array() bildet
  3. Dein mysql_fetch_array() wird immer ausgefuehrt, was zur Folge hat, dass es zum Fehler kommt wenn $_POST['submit'] nicht gesetzt ist

Ich wuerde Dir uebrigens empfehlen mit mysql_fetch_assoc() anstatt mit mysql_fetch_array() zu arbeiten.
 
Re: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resou

Dennis Wronka hat gesagt.:
Ich wuerde Dir uebrigens empfehlen mit mysql_fetch_assoc() anstatt mit mysql_fetch_array() zu arbeiten.

Ich würde dir das auch empfehlen wenn Dennis das sagt, ich habe auch irgendwann angefangen die Funktion zu nutzen, allerdings weiß ich nicht mehr wieso. Könntest du, lieber Dennis, mir das nocheinmal erläutern?

Vielen Dank!

BSA
 
Re: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resou

mysql_fetch_array() ist quasi eine Kombination aus mysql_fetch_row() und mysql_fetch_assoc()
mysql_fetch_row() bietet einen numerischen Index, mysql_fetch_assoc() einen assoziativen Index und mysql_fetch_array() bietet beide. In den meisten Faellen ist es Unsinn beide Indizes zu haben, da man in der Regel eh mit dem assoziativen Index arbeitet. Und mir faellt auch grad kein Beispiel ein wo es Sinn macht beide Indizes zu haben.
 
Re: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resou

Also würde das nur heißen das das ganze ein wenig Speicherplatz spart?
 
Re: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resou

Ich bin ein kleines Stückchen weiter. Ich habe gerade etwas rumgefiddelt (eher aufs Geratewohl denn aus Überzeugung) und die Fehlermeldung ist schonmal weg. Die Einträge, die ich vorher mit phpmyadmin eingefügt habe, werden auch angezeigt.

Jedoch werden keine Daten in die Datenbank eingefügt.


PHP:
<?php echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Shoutbox</title>
<?
$name = $_POST["name"];
$schrei = $_POST["schrei"];
$name = str_replace ("\n"," ", $name);
$name = str_replace ("<", " ", $name);
$name = str_replace (">", " ", $name);
$name = stripslashes ($name);
?>
<?php
        $db = mysql_connect('localhost', 'db', 'pw');
        mysql_select_db('tab', $db);
		$sql = "SELECT * FROM shoutbox
ORDER BY time ASC
LIMIT 0 , 30";
		$ausgabe = mysql_query($sql);
		$query = '
            INSERT INTO
                    `shoutbox`
              SET
                    `time` = "'.time().'"
					`name`  = "'.mysql_real_escape_string($_POST['name']).'",
                    `schrei` = "'.mysql_real_escape_string($_POST['schrei']).'",
            ';
			?>
		
	</head>
	<table>
		<tr>
			<td>
	<form name="shoutbox" action="shoutbox.php" method="post">
<p>Name:&nbsp;
<input type="text" name="name" class=textfeld size="15" maxlength="20" value="<? echo $name; ?>" />
Schrei:&nbsp;
<input type="text" name="message" class=textfeld size="50" maxlength="255" />
<input type="submit" value="Schrei!" class="button" />
</form>
			</td>
		</tr>
		<tr>
			<td>
			<table width="100%" border="0" cellspacing="1" cellpadding="1">
			<?php
			while($zeile = mysql_fetch_assoc($ausgabe)){
              print("<tr><td><i>".$zeile["name"]."</i>&nbsp;schrie am");
              print($zeile["time"]);
              print($zeile["schrei"]."</td></tr>");
			  }
          ?>
            </table>
			
	</td>
</tr>
</table>
</body>
</html>

P.S:: Danke für die schnellen Antworten
 
Re: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resou

Das wiederum liegt daran, dass diese Query
PHP:
       $query = '
            INSERT INTO
                    `shoutbox`
              SET
                    `time` = "'.time().'"
                    `name`  = "'.mysql_real_escape_string($_POST['name']).'",
                    `schrei` = "'.mysql_real_escape_string($_POST['schrei']).'",
            ';
nie ausgefuehrt wird.

Bevor diese Query ausgefuehrt wird solltest Du dann aber wieder pruefen ob Daten geschickt wurden und die einzutragenden Felder (oder zumindest von Dir festgelegte Pflichtfelder) nicht leer sind.
 
Re: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resou

Die mysql_fetch_array()-Funktion erlaubt es übrigens als zweiten Parameter den Ergebnistyp festzulegen. Somit kann nicht pauschal gesagt werden, dass die mysql_fetch_num()- beziehungsweise die mysql_fetch_assoc()-Funktion der mysql_fetch_array()-Funktion vorzuziehen ist.

Probier mal Folgendes:
PHP:
<?php

	$db = mysql_connect('localhost', 'db', 'pw')
		or die('Verbindung zum Datenbankserver schlug fehl!');
	mysql_select_db('tab', $db)
		or die('Auswahl der Datenbank schlug fehl!');


	if( isset($_POST['submit']) ) {
		$query = '
			INSERT INTO
			        `shoutbox`
			  SET
			        `time`   = "'.time().'",
			        `name`   = "'.mysql_real_escape_string(strip_tags($_POST['name'])).'",
			        `schrei` = "'.mysql_real_escape_string($_POST['schrei']).'"
			';
		mysql_query($query)
			or die('Datenbankabfrage schlug fehl!');
	}

	$query = '
		SELECT
		        `time`,
		        `name`,
		        `schrei`
		  FROM
		        `shoutbox`
		  ORDER BY
		        `time` ASC
		  LIMIT
		        0, 30
		';
	$result = mysql_query($query)
		or die('Datenbankabfrage schluf fehl!');

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>Shoutbox</title>
</head>

<body>
	<form name="shoutbox" action="shoutbox.php" method="post">
		<p>Name:&nbsp;
			<input type="text" name="name" class="textfeld" size="15" maxlength="20" value="<? echo htmlspecialchars(strip_tags($_POST['name'])); ?>" /></p>
		<p>Schrei:&nbsp;
			<input type="text" name="message" class="textfeld" size="50" maxlength="255" /></p>
		<p><input type="submit" value="Schrei!" class="button" /></p>
	</form>
	<table width="100%" border="0" cellspacing="1" cellpadding="1">
<?php
	while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
		echo '<tr><td><p><i>'.$row['name'].'</i>&nbsp;schrie am '.$row['time'].':</p><p>'.$zeile['schrei'].'</p></td></tr>';
	}
?>
	</table>
</body>
</html>
 
Re: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resou

Funktioniert leider nicht. Es wird nicht in die Datenbank geschrieben.
Fehlermeldung kommt allerdings auch keine
 

Neue Beiträge

Zurück