Hilfe bei einem php Skript und Fehlersuche

Gast #5039384
Hallo,

ich habe folgendes php Skript programmiert und es funktioniert nicht wie 
es soll....allerdings finde ich den Fehler nicht und frage euch darum um 
Hilfe:
1
<?php require_once('settings.inc.php');
2

3

4
function bool_check_entryexistintable($entry, $tablecolumn, $table, $databaselink)
5
{
6
        $query = "SELECT COUNT(" .$tablecolumn. ") AS cnt FROM " .$table. " WHERE " .$tablecolumn. "=" .$entry;
7
        $result = mysqli_query($databaselink,$query);
8
        echo (bool) mysqli_num_rows($result, 0);
9
        }
10

11
function ressource_connect_database($databasehost, $databaseuser, $databasepassword, $database)
12
{
13
        $link = mysqli_connect($databasehost, $databaseuser, $databasepassword, $database);
14
        if (mysqli_connect_errno()) {
15
                                        $message['error'] = 'Datenbankverbindung fehlgeschlagen: ' . $mysqli->connect_error;
16
                            } else{
17
                        return $link;
18
         }
19
                }
20

21

22
$link = ressource_connect_database(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DB);
23
if ( !bool_check_entryexistintable("1", "ID", "user",$link) )
24
{
25
  echo "exist";


Ich habe die queries einzeln im phpmyadmin gecheckt und die stimmen aber 
das skript funktioniert nicht....wo ist der Fehler?
Gast
dummy schrieb:
>
1
> function bool_check_entryexistintable($entry, $tablecolumn, $table, 
2
> $databaselink)
3
> {
4
>         $query = "SELECT COUNT(" .$tablecolumn. ") AS cnt FROM " 
5
> .$table. " WHERE " .$tablecolumn. "=" .$entry;
6
>         $result = mysqli_query($databaselink,$query);
7
>         echo (bool) mysqli_num_rows($result, 0);
8
>         }
9
>

Habe glücklicherweise ewig kein PHP mehr machen müssen, aber fehlt in 
"bool_check_entryexistintable()" nicht irgendwo ein return?
Gast
Wenn der gesuchte Wert nicht in der Tabelle ist, sollte 
mysqli_num_rows() 0 zurückliefern.

Ist aber eh egal - weil der Wert von mysqli_num_rows() nicht zur 
aufrufenden Funktion zurückgeliefert wird.
Gast
> nein, die Anzahl der Zeilen ist immer 1 - man muss schon der
> Wert abfragen.

Ok gewonnen :-)


    $row_cnt = $result->num_rows;

Das müsste dann aber trotzdem noch zurückgegeben werden.
Gast
nein, doch nicht gewonnen. Hab nochmal nachgeschaut.

Der Aufruf von  mysqli_num_rows($result); sollte 0 zurückgeben wenn das 
"select" keinen passenden Eintrag in der Tabelle gefunden hat.
unabhängig vom sql:
1
function bool_check_entryexistintable($entry, $tablecolumn, $table, $databaselink)
2
{
3
        $query = "SELECT COUNT(" .$tablecolumn. ") AS cnt FROM " .$table. " WHERE " .$tablecolumn. "=" .$entry;
4
        $result = mysqli_query($databaselink,$query);
5
        echo (bool) mysqli_num_rows($result, 0);
6
}
hat immer noch kein return statement.

weg mit dem echo und cast, return und vergleichsoperation her, dann 
nochmal probieren
Gast
Hallo,

also hat der TO jetzt den Unterscheid von 1 row und dem Wert 0 in der 
einen row verstanden oder nicht ?
Das mysql_num_rows ist hier völlig fehl am Platz.

Gruß,
Michael

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.