2013-03-08 7 views
4

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

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

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

Например:

$result = mysql_query($query); 

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

$rows = mysql_num_rows($result); 
+1

Использование mysqli_ * функции –

+1

вы должны использовать [PDO] (http://php.net/manual/fr /book.pdo.php) – soyuka

+1

Это не просто 'mysql_num_rows()'. Это _all of 'mysql _ *()' функции, mysql_connect(), mysql_query() и т. Д. ' –

ответ

5

Согласно PHP Manual, вы должны использовать одно из следующих действий:

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

0

Via php.net/mysql_num_rows ручной

mysql_num_rows

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

-1

don't use mysql_* functions in new code.

Они больше не поддерживается и officially deprecated. См. red box? Узнайте об prepared statements вместо этого и используйте PDO или MySQLi. Эта статья поможет вам решить, какой.

Если вы выбрали PDO, вот good tutorial

+2

Этот почти автоматизированный ответ довольно раздражает и не отвечает на вопрос. –

1

Лично я теперь использовать MySQL Improved extension.

Если вы решите использовать его в процедурной форме, его можно использовать очень похоже на то, как вы в настоящее время используете старое расширение MySQL.

Пример (MySQL):

$result = mysql_query($query); 

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

$rows = mysql_num_rows($result); 

Пример (MySQL Improved):

$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

+0

с использованием mysqli_query() не лучше, чем mysql_query() –

+2

@YourCommonSense mysqli_query() не устарел. В этом-то и дело. –

+0

Должен ли я установить что-нибудь, чтобы заставить mysqli_ работать? – Pars

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.
  • каждый динамическая часть запроса (т.е. вставленные переменные) должны быть вставлены через заполнителем
+0

Спасибо за ваши заметки, очень полезно. PDO теперь мой новый ребенок. – Brobina

Смежные вопросы