关于php:mysql_已弃用

mysql_ deprecated

本问题已经有最佳答案,请猛点这里访问。

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

我应该用什么来代替这个,怎么用?

我几乎所有的疑问都使用它。

例如:

1
2
3
4
5
$result = mysql_query($query);

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

$rows = mysql_num_rows($result);


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

  • mysqli_stmt_num_rows()。
  • pDestatement::RowCount()。

不过,很明显,这两种方法都不能仅仅替代mysql_num_rows()。您的代码最终必须完全重写以使用mysqli或pdo API代替mysql_*()


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

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

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

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

注2重要事项:

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


就我个人而言,我现在使用MySQL改进的扩展。

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

示例(mysql):

1
2
3
4
5
$result = mysql_query($query);

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

$rows = mysql_num_rows($result);

示例(MySQL改进):

1
2
3
4
5
$result = mysqli_query($query);

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

$rows = mysqli_num_rows($result);

但是,我使用的mysql是以面向对象的方式改进的。

更多信息请访问:http://www.php.net/manual/en/book.mysqli.php


正如在官方mysql_num_rows函数描述中提到的,您可以使用mysqli或pdo_mysql作为替代。


通过php.net/mysql_num_rows手册

mysql_num_rows

This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:

  • mysqli_stmt_num_rows()
  • PDOStatement::rowCount()

不要在新代码中使用mysql_*函数。

它们不再被维护,并被正式否决。看到红盒子了吗?学习准备好的语句,并使用pdo或mysqli-本文将帮助您决定哪一个。

如果你选择PDO,这里有一个很好的教程