我有一个上传表格的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错误。)
谢谢!
答案 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;
}
}