2

以下はdb.phpの下の私のコードです

    <?php
$con = mysqli_connect('localhost', 'root', '', 'mydb');

/* check connection */
if (!$con) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

?>

index.phpの下に、db.phpとfunctions.phpを次のように含めます。

include("includes/db.php");
include("includes/functions.php");

Functions.phpもdb.php接続を使用しています。mysqlを使用する前は問題ありません。しかし、mysqlをmysqliに変更した後、functions.phpで「警告:mysqli_query()はパラメーター1がmysqliであり、nullが指定されていることを期待しています」というエラーが発生しました。

これは、functions.phpの下にあるエラーのある関数です。

function get_type($r_id){
    $result=mysqli_query($con, "select type from rooms where id=$r_id") or die("select type from rooms where id=$r_id"."<br/><br/>".mysqli_error());
    $row=mysqli_fetch_assoc($result);
    return $row['type'];
}

私の解決策は、次のようにmysqliを呼び出すfunctions.phpの下のすべての関数にdb.phpを追加することです。

function get_type($r_id){
    include("includes/db.php");
    $result=mysqli_query($con, "select type from rooms where id=$r_id") or die("select type from rooms where id=$r_id"."<br/><br/>".mysqli_error());
    $row=mysqli_fetch_assoc($result);
    return $row['type'];
}

これが正しい解決策かどうか疑問に思います。

4

2 に答える 2

3

問題は、$conが関数で使用できないことです。

各関数に別の引数を追加できます

function get_type($con, $r_id)...

次に$conを渡します

include('includes/db.php');
include('includes/functions.php');
$blah = get_type($con, 5);

また

global $con;たとえば、これを追加することで、各関数に$conにアクセスできるようにすることができます。

function get_type($r_id){
    global $con;
    $result=mysqli_query($con, "select type from rooms where id=$r_id") or die("select type from rooms where id=$r_id"."<br/><br/>".mysqli_error());
    $row=mysqli_fetch_assoc($result);
    return $row['type'];
}

私の友人の選択はあなた次第です

(この猫の皮を剥ぐ方法は他にもあるかもしれません)

于 2012-07-15T13:38:19.877 に答える
0

$con関数でグローバルに設定:

function get_type($r_id){
    global $con;
    $result=mysqli_query($con, "select type from rooms where id=$r_id") or die("select type from rooms where id=$r_id"."<br/><br/>".mysqli_error());
    $row=mysqli_fetch_assoc($result);
    return $row['type'];
}
于 2012-07-15T13:56:42.537 に答える