2016-12-03 8 views
0

Ich habe drei Dateien conn.php, func.php und index.php im conn.php ich meine Verbindung zur Datenbank haben und in index.php ich die Verbindungsdatei aufgenommen haben, während in func.php ich eine Funktion haben, die die Anzahl zählt von SpaltenHinweis: undefinierte Variable: num

func.php

<?php 
function countusers($connection, $column, $table) 
{ 
    $stmt = mysqli_prepare($connection, " 
            SELECT 
             COUNT($column) 
            FROM 
             $table"); 
    if($stmt) 
    { 
     mysqli_stmt_bind_result($stmt, $num); 
     mysqli_execute($stmt); 
     mysqli_stmt_fetch($stmt); 
     mysqli_stmt_close($stmt); 
    } 
    return $num; 
} 

Aber es scheint nicht, ich zu arbeiten habe versucht, die Verbindungsdatei in der Funktion Hinzufügen und es funktionierte.

hier ist meine Indexdatei

index.php

<?php 
require_once "conn.php"; 
include "func.php"; 
echo countusers($conn, "id", "mods"); 

conn.php

<?php 
$conn = mysqli_connect("localhost", "root", "", "test", 3306); 
if(!$conn) 
{ 
    echo "An Error Occurred"; 
} 
+0

erhalten Sie irgendwelche Fehler? – Raptor

+1

Vielleicht sollten Sie uns besser die 'conn.php' zeigen, als ob es so aussehen sollte, wenn es ein Problem mit der Verbindung gibt. – RiggsFolly

+1

Nein, nur ein Hinweis' Hinweis: Undefinierte Variable: num' –

Antwort

1

Ein kurzer Bericht in php.net besagt, dass das Bind_result nach dem Ausführen auftreten muss ... Ich habe dies nicht ausgeführt, so ist es nur ein Vorschlag.

Sie könnten also versuchen ...

//... SNIP... 
    if($stmt) 
    { 
     mysqli_stmt_execute($stmt); // Changed this to mysqli_stmt_execute  
     mysqli_stmt_bind_result($stmt, $num); 
     mysqli_stmt_fetch($stmt); 
     mysqli_stmt_close($stmt); 
    } 
    else { 
     $num = 0; 
    } 
    return $num; 
// ... SNIP ... 

Auch was ist Ihr Standardwert für $ num in dem Fall, dass $ stmt falsch ist? Sie müssen das entscheiden und einstellen.

UPDATE: Der Standardwert für $ num wurde hinzugefügt, falls das stmt aus irgendeinem Grund fehlschlägt. Ich habe seitdem diesen Code ausgeführt und es funktioniert.

Die vorgeschlagenen Änderungen im Code-Snippet DOES stellen einen Wert für $ num bereit, während der ursprüngliche Code dies nicht tat.

Was die Gültigkeit der tatsächlich verwendeten Methode/Implementierung betrifft, ist eine andere Sache, diese Antwort direkt adressiert die Frage zur Hand.

+0

Das hat es behoben –

+0

Grand, aber notieren Sie die Fehlerbericht Vorschläge, die Sie hinzufügen können, die von @RiggsFolly und anderen bereitgestellt wurde, da dies ein wichtiges Werkzeug ist, das jeder beim Debuggen benötigt diese Dinge. – TimBrownlaw

+0

Diese Antwort ist falsch und kann nicht gelöscht werden, da sie akzeptiert wird.Ich wünschte, ich hätte die Fähigkeit, solchen Müll zu entfernen, trotz was dummes OP denkt –

0

versuchen diese

error_reporting(E_ALL); 
 
require_once "conn.php"; 
 
require_once "func.php"; 
 

 
echo countusers($conn, "id", "mods");

+0

Wenn mysqli_ beteiligt ist, ist dies ein besseres Fehlermeldungsset 'ini_set ('display_errors', 1); ini_set ('log_fehler', 1); error_reporting (E_ALL); mysqli_report (MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); ' – RiggsFolly

Verwandte Themen