9

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

我应该使用什么来代替这个以及如何使用?

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

例如:

$result = mysql_query($query);

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

$rows = mysql_num_rows($result);
4

6 回答 6

8

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

不过需要明确的是,这些都不能仅仅替代mysql_num_rows(). 您的代码最终必须完全重写以使用 MySQLi 或 PDO API 代替mysql_*().

于 2013-03-08T12:21:57.287 回答
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 变量中。
  • 每个动态查询部分(即插入的变量)都必须通过占位符插入
于 2013-03-08T12:40:00.437 回答
1

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

如果您选择以程序方式使用它,则可以以与您当前使用旧 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 改进。

更多信息可以在这里找到:http ://www.php.net/manual/en/book.mysqli.php

于 2013-03-08T12:33:00.430 回答
0

通过php.net/mysql_num_rows手册

mysql_num_rows

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

于 2013-03-08T12:22:18.737 回答
0

正如在官方mysql_num_rows 函数描述中提到的那样,您可以使用MysqliPDO_MYSQL作为替代方案。

于 2013-03-08T12:23:32.507 回答
0

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

它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi——本文将帮助您决定使用哪一个。

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

于 2013-03-08T12:23:40.493 回答