需要帮助将这个php mysql代码转换为mysqli

时间:2013-06-30 21:14:33

标签: php mysql mysqli

我有一个上传表格的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错误。)

谢谢!

1 个答案:

答案 0 :(得分: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;       
 }
}
相关问题