mysql_已弃用

时间:2013-03-08 12:19:59

标签: php mysql

有人告诉我,mysql_扩展名现在已在当前版本的PHP中弃用,并且会在某些时候删除。

我应该使用什么而不是这个以及如何使用?

对于我几乎所有的查询,我都使用它。

例如:

$result = mysql_query($query);

if (!$result) die ("Database access failed: " . mysql_error());

$rows = mysql_num_rows($result);

6 个答案:

答案 0 :(得分:6)

根据PHP手册,您应该使用以下任何一种方法:

但要清楚,这些都不仅仅是mysql_num_rows()的替代品。您的代码最终必须完全重写,以使用MySQLi或PDO API代替mysql_*()

答案 1 :(得分:1)

就个人而言,我现在使用MySQL Improved extension

如果您选择以程序方式使用它,则可以使用与您当前使用旧MySQL扩展的方式非常相似的方式。

示例(MySQL):

$result = mysql_query($query);

if (!$result) die ("Database access failed: " . mysql_error());

$rows = mysql_num_rows($result);

示例(MySQL改进):

$result = mysqli_query($query);

if (!$result) die ("Database access failed: " . mysqli_error());

$rows = mysqli_num_rows($result);

但是,我以面向对象的方式使用MySQL Improved。

可在此处找到更多信息:http://www.php.net/manual/en/book.mysqli.php

答案 2 :(得分:1)

如果您了解数据库抽象库的概念,请使用safemysql

$data = $db->getAll($query,$param1,$param2);
$rows = count($data);

如果您更熟悉使用原始API函数,请使用PDO

$stm = $pdo->prepare($query);
$stm->execute(array($param1,$param2));
$data = $stm->fetchAll();
$rows = count($data);

注意2重要事项:

  • 已经存储在$ data变量中的请求数据。
  • 必须通过占位符
  • 插入每个动态查询部分(即插入的变量)

答案 3 :(得分:0)

通过php.net/mysql_num_rows手册

  

<强> mysql_num_rows

     

自PHP 5.5.0起,此扩展程序已弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关的常见问题解答以获取更多信息。该功能的替代方案包括:

     

答案 4 :(得分:0)

与上述提到的mysql_num_rows function description一样,您可以使用MysqliPDO_MYSQL替代。

答案 5 :(得分:-1)

don't use mysql_* functions in new code.

它们不再被维护,而且是officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - 本文将帮助您确定哪个。

如果您选择PDO,则此处为good tutorial