mysql转mysqli_如何使用mysql_函数将脚本转换为使用mysqli_函数?

本文介绍了如何将使用mysql_函数的脚本转换为mysqli_函数,包括连接数据库、选择数据库、清理用户输入、准备和运行查询以及显示错误的方法。同时强调了从mysql_转换到mysqli_时应考虑使用预处理语句以提高安全性。
摘要由CSDN通过智能技术生成

小编典典

注意:

从转换mysql_到mysqli_可能不是最佳的。如果您准备将所有代码转换为OOP,请考虑使用PDO 。

这是很有诱惑力的尝试更换的所有实例mysql_与mysqli_祈祷它的工作原理。您会很亲密,但不是很准。

连接到数据库:

幸运的是,该方法与您可以交换它们的功能名称mysqli_connect足够接近mysql_query。

mysql_:

$con = mysql_connect($host, $username, $password);

mysqli_:

$con = mysqli_connect($host, $username, $password);

选择一个数据库

现在,利用mysqli_库中的大多数其他功能,您需要mysqli_select_db将数据库连接作为其 第一个

参数传递。大多数mysqli_功能首先需要连接对象。

对于此函数,您只需切换传递给该函数的参数的顺序即可。如果您之前未将其传递给连接对象,则 必须立即将其添加为第一个参数。

mysql_:

mysql_select_db($dbname, $con);

mysqli_:

mysqli_select_db($con, $dbname);

另外,您还可以将数据库名称作为第四个参数传递,从而mysqli_connect绕过了call的需要mysqli_select_db。

$con = mysqli_connect($host, $username, $password, $dbname);

清理用户输入

使用mysqli_real_escape_string与十分相似mysql_real_escape_string。您只需要传递连接对象作为第一个参数。

mysql_:

$value1 = mysql_real_escape_string($input_string);

mysqli_:

$value1 = mysqli_real_escape_string($con, $input_string);

非常重要:准备和运行查询

mysql_不建议使用功能的原因之一是它们无法处理预准备的语句。如果您只是简单地将代码转换为,mysqli_而没有采取此重要步骤,则可能会遇到一些功能上的最大弱点mysql_。

值得阅读有关准备好的语句及其好处的这些文章:

PHP.net-MySQLi准备的语句

注意:使用准备好的语句时,最好显式列出要尝试查询的每一列,而不是使用*表示法查询所有列。这样,您可以确保已计入对的调用中的所有列mysqli_stmt_bind_result。

mysql_:

$query = 'SELECT * FROM table1 WHERE table1.col1=' . $value1 . '';

$result = mysql_query($query, $con);

while($row = mysql_fetch_assoc*$result)

{

$col1 = $row['col1'];

$col2 = $row['col2'];

echo $col1 . ' ' . $col2 . '
';

}

mysqli_:

$query = 'SELECT col1,col2 FROM table1 WHERE table1.col1=?';

if ($stmt = mysqli_prepare($link, $query)) {

/* pass parameters to query */

mysqli_stmt_bind_param($stmt, "s", $value1);

/* run the query on the database */

mysqli_stmt_execute($stmt);

/* assign variable for each column to store results in */

mysqli_stmt_bind_result($stmt, $col1, $col2);

/* fetch values */

while (mysqli_stmt_fetch($stmt)) {

/*

on each fetch, the values for each column

in the results are automatically stored in

the variables we assigned using

"mysqli_stmt_bind_result"

*/

echo $col1 . ' ' . $col2 . '
';

}

/* close statement */

mysqli_stmt_close($stmt);

}

显示错误

显示错误与的作用略有不同mysqli_。mysqli_error需要连接对象作为其第一个参数。但是,如果连接失败怎么办?mysqli_引入了一些不需要连接对象的mysqli_connect_*函数:函数。

mysql_:

if (!$con) {

die('Could not connect: ' . mysql_error());

}

if (!$result) {

die('SQL Error: ' . mysql_error());

}

mysqli_:

/* check connection error*/

if (mysqli_connect_errno()) {

die( 'Could not connect: ' . mysqli_connect_error() );

}

/* check query error */

if ($stmt = mysqli_prepare($link, $query)) {

// ... execute query

if (mysqli_stmt_error($stmt)) {

echo 'SQL Error: ' . mysqli_stmt_error($stmt);

}

}

2020-05-17

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值