Prüfen, ob Eintrag in DB steht

Godstyle

Erfahrenes Mitglied
Hallo,

ich habe mir ein kleines Script gebastellt, aber es macht nicht was es soll.

Es soll prüfen ob ein Wert in der Datenbank auch vorhanden ist. Und danach die auswahl treffen.

Der Wert ist nicht vorhanden

PHP:
<?php
  $abfrage = "SELECT id, user_id  FROM village WHERE user_id LIKE '".$_SESSION['ID']."'";
  $result = mysql_query($abfrage);
if (mysql_num_rows($result) == 0)
 {
  echo 'keine Einträge vorhanden';
 }
 else
 {
  echo 'Einträge vorhanden';

}
?>


db ist angelegt und zugriff funktioniert auch.

Hier mal die fehlermeldung:


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\game2\drogen\server1\game.php on line 19
keine Einträge vorhanden


Die Ausgabe macht er, aber wie bekomme ich die Fehlermeldung raus?

lg
 
Moin,

Die Ausgabe macht er, aber wie bekomme ich die Fehlermeldung raus?

Indem du den Fehler analysierst(bspw. per mysql_error() ) und ihn ausbügelst.

Dein Query ist fehlerhaft(ein fehlerfreies SELECT liefert in jedem Fall "a valid MySQL result resource", egal ob es Ergebnisse hervorbrachte oder nicht)

....dies besagt die Fehlermeldung, und mysql_error() sagt dir, was falsch am Query ist.
 
Der Fehler deutet eigentlich auf eine fehlerhafte SQL-Abfrage hin, aber das was du schreibst sieht in Ordnung aus. Außer einer der Feldnamen oder der Name der Tabelle wäre falsch geschrieben.

Wenn das aber das ganze Skript ist, dann fehlt am Anfang "session_start()". Sonst kannst du nicht auf die Session Variable prüfen. Außerdem finde ich es komisch wenn du die Überprüfung mit LIKE vornimmst. Sollte hier keine exakte Übereinstimmung sein !!

Gruß Thomas
 
Ich habe noch einmal genau geprüft ob:

a ) der Tabellen Name stimmt
und
b ) der Datenbankname.


beide waren richtig.

Ja Session start ist vorhanden und wie es sich gehört in der ersten Zeile:

PHP:
<?php
 session_start();
 include("../ink/db.php");
?>

lg

bei all errors on erhalte ich auch nur die selbe Meldung.

Hier mal alle script:

db.php

PHP:
<?php
$conn = mysql_connect("localhost", "*****", "*******") OR die(mysql_error()); 
mysql_select_db(game2) OR die (mysql_error());
?>


script datei:

PHP:
<?php
 session_start();
 include("../ink/db.php");
?> 
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link href="../style/game.css" rel="stylesheet" type="text/css">
</head>

<body>

<div id="haupt">
<?php
  $abfrage = "SELECT id, user_id  FROM villages WHERE user_id LIKE '".$_SESSION['ID']."'";
  $result = mysql_query($abfrage); 
if (mysql_num_rows($result) == 0)
 {
 
 
 
  echo 'keine Einträge vorhanden';
 }
 else
 {
  echo 'Einträge vorhanden';

}
?>
	<div id="right">
    	<div id="truppen"> 
        <font size="-1">
<table width="240" border="1">
  <tr>
    <td  colspan="4"><font size="+1">Angestellte:</font></td>
  </tr>
  <tr>
    <td>Job:</td>
    <td>Eigene:</td>
    <td>Fremde:</td>
    <td>Unterwegs:</td>
  </tr>
  <tr>
    <td>Dealer:</td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
  </tr>
  <tr>
    <td>Mafiosy:</td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
  </tr>
  <tr>
    <td>Gangster:</td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
  </tr>
  <tr>
    <td>Polizei:</td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
  </tr>
  <tr>
    <td>Nutten:</td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
  </tr>
 
</table>
</font>
</div>
    	<div id="bewegungen"><font size="-1">
        <table width="240" border="1">
  <tr>
    <td colspan="2"><font size="+1">Bewegungen:</font></td>
  </tr>
  <tr>
    <td width="60px:">Befehl:</td>
    <td>Stadt:</td>
  </tr>
</table>
</font>
        </div>
        
        </div></div>
</body>
</html>


und hier die sql datei:

PHP:
-- phpMyAdmin SQL Dump
-- version 3.1.3.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Erstellungszeit: 30. Januar 2010 um 14:52
-- Server Version: 5.1.33
-- PHP-Version: 5.2.9

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Datenbank: `game2`
--

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

--
-- Tabellenstruktur für Tabelle `villages`
--

CREATE TABLE IF NOT EXISTS `villages` (
  `id` int(15) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `user_id` varchar(15) NOT NULL,
  `stadtname` int(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Daten für Tabelle `villages`
--

wenn ich die session Id ausgeben lasse, so ist sie auch belegt und das mit dem richtigen Wert.
 
PHP:
  $abfrage = "SELECT id, user_id  FROM villages WHERE user_id LIKE '".$_SESSION['ID']."'";
  $result = mysql_query($abfrage) or die(mysql_error());
if (mysql_num_rows($result) == 0)

ist eingebaut, erhalte den selben Warnhinweis.

Sry Sven das ich es nicht beim ersten Mal berücksichtigt habe.
 
Versuchs mal anders:
PHP:
<?php 
$abfrage = "SELECT id, user_id  FROM village WHERE user_id LIKE '".$_SESSION['ID']."'"; 
if($result = mysql_query($abfrage))
{ 
  echo 'keine Einträge vorhanden'; 
} 
else 
{ 
  echo 'Einträge vorhanden'; 
} 
?>
Wenn die Abfrage keine Treffer hat wird keine gültige ressource erstellt und Du kannst die Anzahl nicht mit mysql_num_rows abfragen.
 
@DarkGerry
Ist mir neu das wenn die Abfrage keine Daten liefert mysql_num_rows nicht verwendet werden kann. Normalerweise bekommt man dann 0 zurück !!

@Godstyle
Lass dir die SQL-Abfrage mal per echo am Bildschirm ausgeben und kopiere sie dann in myAdmin oder so. Mal sehen was dann rauskommt!!

Außerdem hast du beim ersten Beitrag als Tabellennamen "village" und nicht "villages" (man beachte das S am Ende) geschrieben. Nicht das es daran liegt !!
 
Zurück