Mysqli转换建议

时间:2013-03-21 18:07:58

标签: php mysqli

我不得不为新格式更新我的PHP,但我对在线提供的代码感到困惑。目前我正在使用普通的mysql,但我想将其更新为mysqli。这是我有一个代码片段的例子:

$checked= mysql_real_escape_string($_REQUEST["checked"]);

我认为可能只是将mysqli_real_escape_string更改为一个案例,但在查看几个示例代码后,我发现这不是唯一的解决方案 - mysqli :: real_eacape和mysqli-> real_escape也会列出。哪一个是正确的?

谢谢

3 个答案:

答案 0 :(得分:2)

看看这个http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

准备好的语句是清理数据库查询的正确方法,而且它是mysqli中首选的方法。

在我的帖子中回答您的意见:

请注意,有两种方法可以调用它:面向对象和程序。

OOP 使用意味着首先创建一个像这样的mysqli对象:

$mysqli = new mysqli("localhost", "my_user", "my_password", "db");

然后像这样调用转义函数:

$mysqli->real_escape_string($unchecked_string);

程序方式首先连接到数据库,如下所示:

$link = mysqli_connect("localhost", "my_user", "my_password", "db");

然后像这样调用转义函数:

mysqli_real_escape_string($link, $unchecked_string);

使用OOP和预处理语句是使用mysqli的首选方法。

答案 1 :(得分:0)

我更喜欢PDO到mysqli,并且它的预处理语句会自动转义字符串:只需使用您的连接凭据填写DB_NAME,DB_USER_NAME和DB_USER_PASS:

$con = new PDO( 'mysql:host=localhost;dbname=DB_NAME;charset=UTF-8', 'DB_USER_NAME', 'DB_USER_PASS' );

$query = $con->prepare( "SELECT `field` FROM `tbl_name` WHERE `field` = ?" );
$query->bindValue( 1, $field_value );
$query->execute();

if( $query->rowCount() > 0 ) { # If rows are found for query
     echo "Field value found!";
}
else {
     echo "Field value not found!";
}

prepare和bindValue方法自动处理转义数据。

答案 2 :(得分:-1)

正确的是程序风格

mysqli_real_escape_string

和OOP风格

 $mysqli->real_escape_string()

其中$ mysqli只是一个随机变量名