根据以下我用于常规mysql的代码,如何将其转换为使用mysqli?
像更改mysql_query($sql);
为一样简单mysqli_query($sql);
吗?
<?PHP
//in my header file that is included on every page I have this
$DB["dbName"] = "emails";
$DB["host"] = "localhost";
$DB["user"] = "root";
$DB["pass"] = "";
$link = mysql_connect($DB['host'], $DB['user'], $DB['pass']) or die("<center>An Internal Error has Occured. Please report following error to the webmaster.<br><br>".mysql_error()."'</center>");
mysql_select_db($DB['dbName']);
// end header connection part
// function from a functions file that I run a mysql query through in any page.
function executeQuery($sql) {
$result = mysql_query($sql);
if (mysql_error()) {
$error = '<BR><center><font size="+1" face="arial" color="red">An Internal Error has Occured.<BR> The error has been recorded for review</font></center><br>';
if ($_SESSION['auto_id'] == 1) {
$sql_formatted = highlight_string(stripslashes($sql), true);
$error .= '<b>The MySQL Syntax Used</b><br>' . $sql_formatted . '<br><br><b>The MySQL Error Returned</b><br>' . mysql_error();
}
die($error);
}
return $result;
}
// example query ran on anypage of the site using executeQuery function
$sql='SELECT auto_id FROM friend_reg_user WHERE auto_id=' .$info['auto_id'];
$result_member=executequery($sql);
if($line_member=mysql_fetch_array($result_member)){
extract($line_member);
} else {
header("location: index.php");
exit;
}
?>
首先要做的可能是将每个mysql_*
函数调用都替换为等效函数mysqli_*
,至少在您愿意使用过程式API的情况下-考虑到您已经有一些基于MySQL
API的代码,这将是更简单的方法是一种程序性的。
为了解决这个问题,“
MySQLi扩展功能摘要”
绝对是有用的。
例如:
mysql_connect
将被替换 mysqli_connect
mysql_error
将被替换为mysqli_error
和/或mysqli_connect_error
,具体取决于上下文mysql_query
将被替换 mysqli_query
注意:对于某些功能,您可能需要仔细检查参数:也许在这里和那里有一些区别,但是我说的不是很多:mysql和mysqli都基于同一个库
(libmysql;至少对于PHP <= 5.2)
例如:
mysql_select_db
连接后的状态,以指示要在哪个数据库上执行查询mysqli_connect
。mysqli_select_db
如果您愿意,也可以使用一个功能。完成后,尝试执行脚本的新版本…并检查是否一切正常;如果没有…时间寻找虫子;-)
问题内容: 我在Windows 7上,对这个数据库东西有些陌生。我尝试在Google上搜索如何将时区从我的系统更改为UTC,但是文档有些高级,因此我不太确定如何更改此字段。 问题答案: 在my.ini文件的[mysqld]部分下,添加以下行: 重新启动服务器。您还可以在运行时从命令行使用以下命令进行设置 MySql的文档
问题内容: 我试图在事实发生后修改表使其成为主键列。我尝试了以下SQL,但收到语法错误通知。 我做错什么了吗? 问题答案:
我是一个超级初学者与Android Studio。我正在尝试打开相册并获取图像,startActivityForResult()已被弃用。如何使用ActivityResultLauncher更改代码?
问题内容: 我想将MySQL服务器的默认端口号更改为3306。我想将其更改为3360。 我努力了: 但是事情对我不起作用。请提供查询以更改端口而不进行任何配置。我正在使用Windows 8 64位。 问题答案: 您需要编辑文件,并确保已按照以下行设置了端口: 然后重新启动MySQL服务,您应该一切顺利。没有查询,您可以运行以进行更改,因为它不是动态变量(有关MySQL文档,其中显示了所有系统变量的
问题内容: 当前列是VARCHAR(255)NOT NULL,那么如何将其更改为TEXT NOT NULL? 注意:要更改其属性类型的列是另一列的UNIQUE KEY组合。例如 唯一键(名称,说明) 列描述当前位于varchar(255)中。因此无法更改: 错误1170(42000):在密钥规范中使用的BLOB / TEXT列’description’没有密钥长度 我需要它是TEXT,否则我需要重
我需要在我的mysql数据库中的表中更改列,以便列中当前为true的值更改为false,之前为false的值更改为true。 那么,在:值A:假值B:真之前 之后:值A:真值B:假 我该怎么做?试图为此编写一个液化迁移。我首先想到的是: 更新表设置列A=false,其中列A=true,设置列A=true,其中列A=false; 但我意识到,如果我首先将真值更改为假,那么所有值都将为假,然后MySQ