0

mysqli拡張機能の使用を開始する必要がありますが、使用しようとしているすべての情報に応じて、あらゆる種類の競合する情報が見つかります。

たとえば、私のヘッダーは現在次のような'config.php'ファイルに接続します。

<?php
$hostname_em = "localhost";
$database_em = "test";
$username_em = "user";
$password_em = "pass";
$em = mysql_pconnect($hostname_em, $username_em, $password_em) or trigger_error(mysql_error(),E_USER_ERROR); 
?>

しかし、php.netにアクセスすると、これを使用する必要があることがわかりますが、すべてを更新した後、データベースが取得されません。

<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
echo $mysqli->host_info . "\n";

$mysqli = new mysqli("127.0.0.1", "user", "password", "database", 3306);
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

echo $mysqli->host_info . "\n";
?>

また、自分のサイトの次のコードに「i」を追加しましたが、運が悪かったのです。

mysql_select_db($database_em, $em);
$query_getReview =
"SELECT 
reviews.title,
reviews.cover_art,
reviews.blog_entry,
reviews.rating,
reviews.published,
reviews.updated,
artists.artists_name,
contributors.contributors_name,
contributors.contributors_photo,
contributors.contributors_popup,
categories_name
FROM
reviews
JOIN artists ON artists.id = reviews.artistid
JOIN contributors ON contributors.id = reviews.contributorid
JOIN categories ON categories.id = reviews.categoryid
ORDER BY reviews.updated DESC LIMIT 3";
$getReview = mysql_query($query_getReview, $em) or die(mysql_error());
$row_getReview = mysql_fetch_assoc($getReview);
$totalRows_getReview = mysql_num_rows($getReview);

そして、これまでのところmysqlについてさえ言及している私の表示ページ上の唯一の場所はここにあります:

<?php } while ($row_getReview = mysql_fetch_assoc($getReview)); ?>

私はオラクルで何かを見て、別のスタックオーバーフローの回答が誰かにこのようなものを自動的に更新するように指示しましたが、この時点ではコードがほとんどないのでやり過ぎのようです。

4

2 に答える 2

3

mysql 関数に i を追加しても、有効な mysqli 関数にはなりません。そのような関数が存在する場合でも、パラメータが異なる可能性があります。ここhttp://php.net/manual/en/book.mysqli.phpを見て、mysqli の機能を確認してください。物事の仕組みに慣れるために、いくつかの例を試してみてください。また、オブジェクト指向コードか手続き型コードのいずれかを選択することをお勧めします。それらを混ぜないでください。

于 2012-11-29T20:16:26.960 に答える
0

最近mysqliに切り替えたところ、頭を包むのに数時間かかりました。それは私にとってうまく機能します、それがあなたを少し助けることを願っています。

ここでBDに接続する関数は次のとおりです。

function sql_conn(){
    $sql_host = "localhost";
    $sql_user = "test";
    $sql_pass = "pass";
    $sql_name = "test";
    $sql_conn = new mysqli($sql_host, $sql_user, $sql_pass, $sql_name);
    if ($sql_conn->connect_errno) error_log ("Failed to connect to MySQL: (" . $sql_conn->connect_errno . ") " . $sql_conn->connect_error);
    return $sql_conn;
}

これにより、後でリクエストするために使用できるMysqliオブジェクトが返されます。config.phpに入れてインクルードするか、ファイルの先頭に追加することができます。

このオブジェクトを取得したら、次のようにオブジェクトに対してクエリを実行できます(この場合、エラーが発生した場合は、error_logに出力されます。そこにあるのが好きです。代わりにエコーできます。

    //Use the above function to create the mysqli object.
    var $mysqli = sql_conn();

    //Create the query string (truncated for the example)
    var $query = "SELECT reviews.titl ... ... ted DESC LIMIT 3";

    //Launch the query on the mysqli object using the query() method
    if(!($results = $mysqli->query($query))){
        //It it fails, log the error

        error_log(mysqli_error($mysqli));
    }else{
        //Manipulate your data.
        //here it depends on what you retunr, a single value, row or a list of rows.
        //Example for a set of rows

        while ($record = $results->fetch_object()){ 
          array_push($array, $record); 
        }
    }
   //Just to show, this will output the array:
   print_r($array);

  //Close the connection:
  $mysqli->close();

したがって、基本的に、mysqliでは、オブジェクトを作成し、メソッドを使用して作業を進めます。お役に立てれば。あなたがそれを理解したら、あなたはおそらくmysqlよりもmysqliを楽しむでしょう。とにかくやりました。

PS:これは既存の動作中のコードからコピー/貼り付けされたものであることに注意してください。いくつかのタイプミスがあるかもしれませんし、どこかで変数を変更するのを忘れているかもしれませんが、それはmysqliがどのように機能するかについてのアイデアを与えるためです。お役に立てれば。

于 2012-11-29T20:30:36.303 に答える