2016-12-03 7 views
0

私は三つのファイルconn.phpfunc.phpconn.phpindex.phpを持っている私は、データベースへの私の接続を持っているとfunc.phpに、私は数を数える機能をした一方でindex.phpに私は接続ファイルを含めました列注意:未定義の変数:NUM

<?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; 
} 

func.php

しかし、私が関数内の接続ファイルを追加しようとしましたし、それが働いていた動作するようには思えませんの。ここ

の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

エラーが発生しますか? – Raptor

+1

接続に問題がなければ、私にはうまくいくはずの 'conn.php'を表示したほうがいいかもしれません。 – RiggsFolly

+1

いいえ、通知しないでくださいNotice:未定義の変数:num' –

答えて

1

bind_resultは実行後に発生する必要があることをphp.netで簡単に説明しています。私はこれを実行していないので、その提案のみです。だから、

あなたが試みることができる...

//... 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 ... 

また$ stmtはが偽の場合の$ numのデフォルト値は何ですか?それを決めて設定する必要があります。

UPDATE:何らかの理由でstmtが失敗した場合に、$ numのデフォルト値が追加されました。私はこのコードを実行して以来、それは動作します。

コードスニペットで示唆された変更は、$ numの値を提供しますが、元のコードは変更しませんでした。

使用されている実際の方法/実装の妥当性については別の問題ですが、この回答は当面の問題に直接対処しました。

+0

これは修正済みです。 –

+0

Grandですが、これは@RiggsFollyや他のユーザーが提供できるエラー報告コードの提案をメモしています。これは誰でもデバッグに必要な重要なツールですこれらの事。 – TimBrownlaw

+0

この回答は間違っており、承認されたため削除できません。私は、愚かなOPが考えていることにもかかわらず、そのようなごみを取り除くことができたらいいと思う。 –

0

私のインデックスファイルで試してください。この

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

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

+0

'mysqli_'が関わっている場合、これは' ini_set( 'display_errors'、1)というエラー報告の方が優れています。 ini_set( 'log_errors'、1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); ' – RiggsFolly