Seite 1 von 1

mysql_num_rows() Warnung ?

Verfasst: 06.02.2010 12:21
von Bones van Helghast
Also manchmal fühl ich mich echt verarscht :roll:.
Diesmal geht es um ein Script das eingaben in einer SQL speichert und sie öffentlich ausgibt (so art blog)
Ich hab 2 Versionen dafür einmal englisch und enmal deutsch die englische version ist 1:1 die gleiche wie die deutsche nur dass die englische version eine extra datenbank anwählt und die deutsche version eine extra datenbank.

Ich hab wirklich die Datei 1x angelegt (erst englisch) habs mit c & p ein dublikat erstellt und die datenbank anwählung geändert bzw die action fürs formular geändert und nun kommt beim absenden dieser error:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Admin\admin_de.php on line 94
Das Formular + SQL befehl sieht so aus:

Code: Alles auswählen

<form action="Admin/admin_de.php" method="post">
<table style="width:100%">
<tr>
<td class="style3">Name:</td>
<td class="style1">Nachricht:</td>
</tr>
<tr>
<td class="style3">
<input id="username" maxlength="5" name="username" type="text" value="Admin" readonly></td>
</td>
<td class="style1">							
<textarea id="nachricht" name="nachricht" style="width: 95%; height: 150px"></textarea>
</td>
</tr>
</table>
<br><br>
<input type="submit" value="Abschicken">
</form>';


$username = $_POST["username"];
$datum = date("d.m.Y",time());
$nachricht = $_POST["nachricht"];


if($username == "" OR $nachricht == "")
    {
    echo "Bitte alle Felder überprüfen.";
    }
else {

$result = mysql_query("SELECT id FROM update WHERE nachricht LIKE '$nachricht'");
$menge = mysql_num_rows($result);

if($menge == 0)
    {
    $eintrag = "INSERT INTO update (username, datum, nachricht) VALUES ('$username', '$datum', '$nachricht')";
    $eintragen = mysql_query($eintrag);

    if($eintragen == true)
        {
        echo "Ticket erfolgreich erstellt.";
        }
    else
        {
        echo "Fehler beim Speichern des Tickets.";
        }


    }};
Zeile 94:

Code: Alles auswählen

$menge = mysql_num_rows($result);
Lustigerweiße funktioniert das Formular wenn ich das über die datenbank der englischen version laufen lass die datenbank für _de besteht aber !

Der Code für die MySQL DB:

Code: Alles auswählen

-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Erstellungszeit: 06. Februar 2010 um 12:20
-- Server Version: 5.1.41
-- PHP-Version: 5.3.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Datenbank: `zerdux`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `update`
--

CREATE TABLE IF NOT EXISTS `update` (
  `ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(5) NOT NULL,
  `nachricht` varchar(5000) NOT NULL,
  `datum` varchar(10) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Daten für Tabelle `update`
--

Ich versteh irgendwie die welt nicht mehr :roll:

Re: mysql_num_rows() Warnung ?

Verfasst: 06.02.2010 17:13
von Pyramide
Meine Datenbankabfrage funktioniert nicht
Pyramide hat geschrieben:Auf jeden Fall solltest du den Code noch gegen SQL Injection absichern.
Warum das Formular mit einer anderen Datenbank plötzlich lustig und weiß sein sollte, entzieht sich jedoch meiner Kenntnis. War es vorher grün?.

Re: mysql_num_rows() Warnung ?

Verfasst: 07.02.2010 10:50
von Bones van Helghast
Eine einfache Antwort wie:
Die Datenbank darf nicht "Update" heißen hätts auch getan, danke habs selber rausgefunden :evil:

Re: mysql_num_rows() Warnung ?

Verfasst: 07.02.2010 13:21
von Pyramide
Eine Antwort wie
Vielen Dank Pyramide, dass du mir einen Weg gezeigt hast, wie ich mir zukünftig die Fehlermeldungen selbst anzeigen lassen kann, so dass ich nicht mehr bei jedem Problem ahnungslos da stehe und dann im Forum nach Hilfe fragen muss.

Auch vielen Dank für den Hinweis darauf, dass mein Code anfällig für SQL Injections ist. Das habe ich selbst nämlich nicht gewusst und ohne deinen netten Hinweis wäre ich vermutlich früher oder später Opfer eines Hackangriffs geworden.
hätte es auch getan.