Почему нужно использовать расширение mysqli вместо mysql?
- Оно предоставляет больше функциональности,
- позволяет использовать объектно-ориентированный стиль,
- предоставляет более безопасный доступ к базе данных,
- продолжает развиваться и поддерживаться.
Установка в Ubuntu
В терминале нужно набрать следующее:
sudo aptitude install php5-mysqlnd
Если у Вас нет утилиты aptitude, то можно написать так:
sudo apt-get install php5-mysqlnd
Рабочий пример
<?php $db_host = 'localhost'; // Адрес сервера, где находится база данных $db_port = '3306'; // Порт 3306 - по умолчанию $db_name = 'my_database'; // Название базы данных $db_user = 'username'; // Имя пользователя базы данных $db_password = '1234567890'; // Пароль // Подключаемся к базе данных $DB = new mysqli($db_host, $db_user, $db_password, $db_name, $db_port); // SQL-запрос. Символом '?' (вопрос) указываем параметр, // который нужно вставить в запрос $sql = <<<EOT select `id` from `fields` where `shortname` = ? EOT; $shortname = 'name_of_field'; // Подготавливаем запрос. // Проверяем наличие таблиц, указанных в запросе $stmt = $DB->prepare($sql); // Вставляем нужный параметр в запрос. Экранируем все спец-символы. $stmt->bind_param('s', $shortname); // Выполняем запрос $stmt->execute(); // Получаем результат запроса $data = $stmt->get_result()->fetch_array(MYSQLI_ASSOC); ?>
В результате в переменной $data будет массив такого вида:
array(1) { ["id"]=>int(1234) }
Если требуется получить все строчки таблицы сразу, нужно вместо метода fetch_array использовать метод fetch_all, т.е. последняя строчка кода будет выглядеть так:
$data = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);