mysql_ устарел

Мне сказали, что расширение mysql_ теперь устарело в текущей версии PHP и в какой-то момент будет удалено.

Что я должен использовать вместо этого и как?

Почти для всех моих запросов я использую его.

Например:

 $result = mysql_query($query); if (!$result) die ("Database access failed: " . mysql_error()); $rows = mysql_num_rows($result); 

Согласно Руководству по PHP , вы должны использовать любое из следующего:

  • mysqli_stmt_num_rows ()
  • PDOStatement :: ROWCOUNT ()

Однако, чтобы быть ясным, ни одна из них не является простой заменой для mysql_num_rows() . В конечном итоге ваш код должен быть полностью переписан для использования MySQLi или PDO API вместо mysql_*() .

Лично я теперь использую расширение MySQL Improved .

Если вы решите использовать его процедурным способом, его можно использовать очень похоже на то, как вы в настоящее время используете старое расширение 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

Если вы понимаете идею библиотек абстракции базы данных, используйте 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); - $stm = $pdo->prepare($query); $stm->execute(array($param1,$param2)); $data = $stm->fetchAll(); $rows = count($data); 

Обратите внимание: 2 важные вещи:

  • запрошенные данные уже сохранены в переменной $ data.
  • каждая динамическая часть запроса (т.е. вставленные переменные) должна быть вставлена ​​через placeholder

Руководство по php.net/mysql_num_rows

mysql_num_rows

Это расширение устарело с PHP 5.5.0 и будет удалено в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. См. Также MySQL: выбирая руководство по API и связанные с ним FAQ для получения дополнительной информации. Альтернативы этой функции включают:

  • mysqli_stmt_num_rows()
  • PDOStatement::rowCount()

Как упоминалось выше в описании функции mysql_num_rows, вы можете использовать Mysqli или PDO_MYSQL в качестве альтернативы.

не используйте функции mysql_ * в новом коде.

Они больше не поддерживаются и официально устарели . См. Красную рамку ? Узнайте о подготовленных инструкциях и используйте PDO или MySQLi. Эта статья поможет вам решить, какой из них.

Если вы выберете PDO, вот хороший учебник