0

アップロード フォーム用の php コードがあり、この mysql を推奨される mysqli に更新しようとしています。私は OO スタイルを学ぼうとしています (手続き型でもありますが、OO スタイルの学習に傾倒しています)。

このスニペットを除いて、これまでのところすべてのコードの更新に成功しています。

function query($query) {  
$database = $this->options['database'];  
$host = $this->options['host'];  
$username = $this->options['username'];  
$password = $this->options['password'];  
$link = mysql_connect($host,$username,$password);  
if (!$link) {  
    die(mysql_error());  
}
$db_selected = mysql_select_db($database);  
if (!$db_selected) {  
    die(mysql_error());  
}  
$result = mysql_query($query);  
mysql_close($link);  
return $result;  
}

それをMySQLiのオブジェクト指向スタイルに変換するのを手伝ってくれる人はいますか? 私は非常に多くの組み合わせを試しましたが、どこが間違っているのかわかりません (写真をアップロードしようとすると、db エラーが発生します)。

ありがとう!

4

1 に答える 1

0

これはうまくいくはずです。mysqli の結果が mysqli->close() に耐えられるかどうかわからないので、$result からデータを取得して配列に入れ、それを返しました。これをテストしたいかもしれません。

また、クエリごとに接続を開いたり閉じたりするのはなぜだろうか。私は通常、接続を開き、スクリプトがすべてのクエリを完了するまで開いたままにします。

function query($query) {  
  // no real need for this - the variables can be used directly
  $database = $this->options['database'];  
  $host = $this->options['host'];  
  $username = $this->options['username'];  
  $password = $this->options['password'];  

  // instantiate the mysqli object. Select the database at the same time.
  $mysqli = new mysqli($host, $username, $password, $database);

  if ($mysqli->connect_error) {  
    die($mysqli->connect_error);  
  }

 $result = $mysqli->query($query); 
 if ($result !== false) { 

   // retrieve data
   $data = array();
   while ($data[] = $result->fetch_assoc()) {}

   // release the result set and close the connection
   $result->free();
   $mysqli->close();
   return $data;
 } else {
   syslog(LOG_ERROR, "SQL error:".$mysqli->error);
   $mysqli->close();
   return false;       
 }
}
于 2013-06-30T22:10:09.800 に答える