2

私は自分が構築しているWebサイトでページ付けに取り組んでおり、ここで適切なページ付けの例を見つけました:http ://www.awcore.com/dev/1/3/Create-Awesome-PHPMYSQL-Pagination_en 。私のページでこれを希望しますが、mysqlの代わりにmysqliを使用しており、その一部を変換する必要があります。

私はMySQLを初めて使用し、次のコードを変換するための構文を理解しようとしています。

function pagination($query, $per_page = 10,$page = 1, $url = '?'){        
    $query = "SELECT COUNT(*) as `num` FROM {$query}";
    $row = mysql_fetch_array(mysql_query($query));
    $total = $row['num'];
    $adjacents = "2"; 

コード全体(約100行の長さ)についてはあまりわかりませんが、これは簡単な構文変更である可能性があると思います。私は最初にそれをこのようにした:

function pagination($query, $per_page = 10,$page = 1, $url = '?'){        
    $query = "SELECT COUNT(*) as `num` FROM {$query}";
    $row = mysqli_fetch_array(mysqli_query($query));
    $total = $row['num'];
    $adjacents = "2";

mysqli_queryは2つのパラメーターを受け取る必要があることを認識していますが、mysql_queryでも同じであるという印象を受けたので、コードを理解していないだけだと思います。これが非常に基本的な質問である場合は申し訳ありませんが、私はこれらの概念のいくつかに頭を悩ませようとしています!助けてくれてありがとう。

ところで、私はこの質問(mysqlからmysqli(mysql_fetch_array)への変換)を見ましたが、彼は実行する必要がないかもしれないいくつかの追加の手順を実行しているように見えました。

編集

上記のコードFYIで表示されるエラーメッセージは次のとおりです。

警告:mysqli_query()は、少なくとも2つのパラメーターを必要とします。1つは、9行目のlinkinformation/functions.phpで指定されています。

警告:mysqli_fetch_array()は、パラメーター1がmysqli_resultであり、9行目のlinkinformation/functions.phpでnullが指定されていることを想定しています。

編集

そこで、関数内に接続を追加しました(これは正しいアプローチですか?関数の外部に接続しようとしましたが、情報を取得していました):

function pagination($mysqli, $query, $per_page = 10,$page = 1, $url = '?'){        
    $mysqli = mysqli_connect("localhost","username","password", "db_name");
    $query = "SELECT COUNT(*) as `num` FROM {$query}";
    $row = mysqli_fetch_array(mysqli_query($mysqli, $query));
    $total = $row['num'];
    $adjacents = "2"; 

この警告が表示されます:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in linkstuff/functions.php on line 10

ブール値(TRUEであると想定しています)を取得していますが、私が想定している他の何か/実際のクエリを取得しているはずです。

4

3 に答える 3

2

接続もに変更しmysqli、接続オブジェクトをmysqli_query最初の引数としてに渡す必要があります。

function pagination($link, $query, $per_page = 10,$page = 1, $url = '?'){        
    $query = "SELECT COUNT(*) as `num` FROM {$query}";
    $row = mysqli_fetch_array(mysqli_query($link, $query));
    $total = $row['num'];
    $adjacents = "2";
于 2012-11-03T05:34:03.143 に答える
0

このようなもの:

//You need to change thses variables    
$conn = new mysqli('localhost','root','',$databasename);

    function pagination( $conn,$query, $per_page = 10,$page = 1, $url = '?'){        
        $query = "SELECT COUNT(*) as `num` FROM {$query}";
        $result = $conn->query($query);
        $row=$result->fetch_array;
        $total = $result->num_rows;
        $adjacents = "2";
于 2012-11-03T05:51:41.037 に答える
0

//これらの変数を変更する必要があります

global $conn;  
$conn = new mysqli('localhost','root','',$databasename);

    function pagination($query, $per_page = 10,$page = 1, $url = '?'){        
        $query = "SELECT COUNT(*) as `num` FROM {$query}";
        $result = $GLOBALS['conn']->query($query);
        $row=$result->fetch_array;
        $total = $result->num_rows;
        $adjacents = "2";
于 2012-11-03T06:51:10.263 に答える