Проанализировав запросы основных поисковых систем, я пришел к выводу, что сегодняшняя тема очень даже актуальна в обществе начинающих программистов. Давайте попробуем подробней рассмотреть вопрос: как же делать SQL запросы в языке PHP…
Для того что бы работать с базой данных к ней нужно подсоедениться. Пусть наша база — это MySQL который идет вместе с Апачем и работает на локальном компьютере. Тогда для коннекта к базе нам необходимо выполнить следующий код:
mysql_connect('localhost', 'root', '') or die('Error!!! '.mysql_error()); mysql_select_db('base'); mysql_query("SET NAMES cp1251");
Писать это каждый раз — засорение кода, поэтому сделаем из этого кода функцию:
function db_connect($user='root',$password='',$db='base') { mysql_connect('localhost', $user, $password) or die('Error!!! '.mysql_error()); mysql_select_db($db); mysql_query("SET NAMES cp1251"); }
Все дальнейшие рассуждения будем проводить предполагая что код находится между строчками: 1 и N.
db_connect(); //Строка 1 ... ... ... mysql_close(); //Строка N - закрываем соединение с базой
Пусть наша база ‘base’ имеет таблицу ‘Users’ следующей структуры:
id (int), name (varchar[100]), age (int)
И имеются данные:
id | name | age |
1 | Иванов Иван | 20 |
2 | Петров Петр | 21 |
3 | Сидоров Сидр | 20 |
4 | Пупкин Пупка | 25 |
5 | Васечкин Вася | 35 |
Далее рассмотрим на примере различных запросов, различные команды для вывода результата запроса.
Наш первый запрос — выведем все данные из таблицы:
$result = mysql_query("SELECT * FROM `Users`"); while ($data = mysql_fetch_assoc($result)) { echo $data["id"]." '".$data["name"]."' ".$data["age"]."<br/>"; }
Как видно из примера mysql_fetch_assoc создает ассоциативный массив с данными. Т.е. для обращения необхдимо указать имя столбца.
Наш второй запрос — выведем всех кому 20 лет:
$result = mysql_query("SELECT * FROM `Users` WHERE `age` = 20"); while(list($id, $name, $age) = mysql_fetch_row($result)) { echo "$id '$name' $age<br/>"; }
В данном случае значение данных записывается в переменные. И вся работа проводится с ними.
Наш третий запрос — выведем всех кому от 24 до 36 лет:
$sql = "SELECT `name` FROM `Users` WHERE (`age` > 24) AND (`age` < 36)"; $result = mysql_query($sql); $numr = mysql_num_rows($result); for ($i=0; $i<$numr; ++$i) { echo mysql_result($result, $i, 'name'); echo "<br/>"; }
Здесь мы получаем общее число строк, а далее вытаскиваем значения из $result путем указания строки и столбца.
Ну пожалуй хватит. Что имено использовать — дело Ваше. Как говорится на вкус и цвет…