php select from select

Основы PHP и MySQL — Операторы выборки (SELECT), вставки (INSERT), обновления (UPDATE) и удаления (DELETE) информации из базы данных

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

В этой статье мы на примерах разберем такие очень важные моменты в работе с базами данных MySQL (БД), как выборка из базы данных, запись в базу данных, обновление информации в базе данных, а также ее удаление из базы данных. Все это будет производиться при помощи четырех операторов PHP – операторов SELECT, INSERT, UPDATE и DELETE о которых и пойдет речь в данной статье.

В предыдущей статье про основы работы с базами данных мы рассмотрели, как создавать базы данных через phpMyAdmin и заносить в них информацию, а также как подключаться к БД через PHP. Теперь давайте перейдем к следующему этапу в изучении PHP и MySQL и рассмотрим, как вытащить информацию из базы данных при помощи PHP или другими словами сделать выборку из БД.

Как сделать выборку из базы данных. Оператор выборки SELECT

Перед тем как производить выборку из базы данных, первым делом нужно подключиться к MySQL серверу и выбрать базу данных для работы. Как вы уже знаете из предыдущей статьи рубрики «Уроки PHP и MySQL», делается это следующим образом.

После соединения с MySQL сервером и выбора базы данных можно приступить непосредственно к выборке из БД. Для примера возьмем базу данных, которую мы создавали в предыдущей статье. Напомню, что была создана база данных с именем db_name и одной таблицей first_table, в которой было всего три поля: id (идентификатор), name (имя), last_name (фамилия). Для того чтобы произвести выборку из базы данных можно использовать функцию mysql_query(), которая в данном случае имеет следующий синтаксис.

Если говорить простыми словами, то данный код расшифровывается как «ВЫБРАТЬ поля (перечисляем названия через запятую) ИЗ таблицы (указываем имя таблицы БД) ГДЕ выполняется условие (прописываем условие)». Как видите синтаксис функции очень простой, а сам код похож на обычный человеческий язык.

Поскольку функция mysql_query() возвращают результат, то его нужно поместить в какую-то переменную для дальнейшего использования, например, в переменную $result.

Теперь результат выполнения функции mysql_query() хранится в переменной $result и может быть использован, например, для формирования массива и вывода результатов на экран. Более подробно об этом мы поговорим чуть позже, ну а пока перейдем к примерам. В качестве базы данных для примера будем использовать базу db_name из предыдущей статьи.

Итак, если нужно вытащить все поля из базы данных используем следующий код.

Звездочка означает, что нужно вытащить все поля из таблицы.

Если нужно вытащить только некоторые поля, например, имя и фамилию.

name, last_name – поля с именами и фамилиями пользователей.

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

Если вам нужно отсортировать результат по каким-то параметрам, например, по имени.

ORDER BY name – отсортировать по имени.

Если нужно отсортировать в обратном порядке.

DESC – в обратном порядке.

Если нужно вытащить только определенное количество полей из базы данных. К примеру, нужно вытащить первые пять полей.

LIMIT 5 – вытащить из БД только первые пять результатов.

Это были небольшие примеры выборки из базы данных. Теперь давайте рассмотрим, как преобразовать полученный результат в массив для дальнейшего использования, например, для вывода результата на экран. Для этого в PHP существует специальная функция PHP mysql_fetch_array().

Как видите все очень просто и понятно.

Ну а теперь перейдем к следующему оператору INSERT, который отвечает за добавление информации в базу данных.

Добавление информации в базу данных. Оператор INSERT

Оператор INSERT применяется для добавления информации в базу данных. Код, отвечающий за добавление, имеет следующий синтаксис.

Данный код можно было бы прочитать как «ВСТАВИТЬ В таблицу (имя таблицы) в поля (названия полей через запятую) ЗНАЧЕНИЯ (перечисляем значения через запятую)».

Например, нам нужно добавить в таблицу first_table имя и фамилию нового пользователя. Для этого можно использовать следующий код.

Для того чтобы проверить результат можно использовать конструкцию if – else.

Обновление информации в базе данных. Оператор UPDATE

Оператор UPDATE применяется для обновления уже существующей информации в базе данных. Синтаксис функции mysql_query в данном случае следующий.

Теперь давайте перейдем к заключительной части статьи и рассмотрим последний оператор DELETE, который отвечает за удаление информации из базы данных.

Удаление информации из базы данных. Оператор DELETE

Оператор DELETE применяется для удаления полей из базы данных. Синтаксис функции mysql_query() в данном случае следующий.

На этом данная статья подошла к концу. Материал не сложный, но объяснять его посредством текста достаточно сложно. Все же я думаю, вы поняли всю суть вышеизложенного материала. Если у вас остались какие-то вопросы по данной статье, вы всегда можете задать их в комментариях.

На этом все. Удачи вам и успехов в изучении PHP и MySQL.

Источник

Вместо «что_выбрать» мы должны указать либо имя столбца, значения которого хотим увидеть, либо имена нескольких столбцов через запятую, либо символ звездочки (*), означающий выбор всех столбцов таблицы. Вместо «откуда_выбрать» следует указать имя таблицы.

Давайте сначала посмотрим все столбцы из таблицы users:

SELECT * FROM users;

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

Вот и все наши данные, которые мы вносили в эту таблицу. Но предположим, что мы хотим посмотреть только столбец id_user (например, в прошлом уроке, нам надо было для заполнения таблицы topics (темы) знать, какие id_user есть в таблице users). Для этого в запросе мы укажем имя этого столбца:

SELECT id_user FROM users;

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

Ну, а если мы захотим посмотреть, например, имена и e-mail наших пользователей, то мы перечислим интересующие столбцы через запятую:

SELECT name, email FROM users;

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

Аналогично, вы можете посмотреть, какие данные содержат и другие наши таблицы. Давайте посмотрим, какие у нас существуют темы:

SELECT * FROM topics;

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

Сейчас у нас всего 4 темы, а если их будет 100? Хотелось бы, чтобы они выводились, например, по алфавиту. Для этого в SQL существует ключевое слово ORDER BY после которого указывается имя столбца по которому будет происходить сортировка. Синтаксис следующий:

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

По умолчанию сортировка идет по возрастанию, но это можно изменить, добавив ключевое слово DESC

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

Теперь наши данные отсортированы в порядке по убыванию.

Сортировку можно производить сразу по нескольким столбцам. Например, следующий запрос отсортирует данные по столбцу topic_name, и если в этом столбце будет несколько одинаковых строк, то в столбце id_author будет осуществлена сортировка по убыванию:

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

Сравните результат с результатом предыдущего запроса.

Очень часто нам не нужна вся информация из таблицы. Например, мы хотим узнать, какие темы были созданы пользователем sveta (id=4). Для этого в SQL есть ключевое слово WHERE, синтаксис у такого запроса следующий:

Для нашего примера условием является идентификатор пользователя, т.е. нам нужны только те строки, в столбце id_author которых стоит 4 (идентификатор пользователя sveta):

SELECT * FROM topics WHERE id_author=4;

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

Или мы хотим узнать, кто создал тему «велосипеды»:

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

Конечно, было бы удобнее, чтобы вместо id автора, выводилось его имя, но имена хранятся в другой таблице. В последующих уроках мы узнаем, как выбирать данные из нескольких таблиц. А пока узнаем, какие условия можно задавать, используя ключевое слово WHERE.

ОператорОписание
= (равно)Отбираются значения равные указанному

SELECT * FROM topics WHERE id_author=4;

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

> (больше)Отбираются значения больше указанного

SELECT * FROM topics WHERE id_author>2;

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

Пример:

SELECT * FROM topics WHERE id_author Результат:

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

>= (больше или равно)Отбираются значения большие и равные указанному

SELECT * FROM topics WHERE id_author>=2;

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

Пример:

SELECT * FROM topics WHERE id_author Результат:

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

!= (не равно)Отбираются значения не равные указанному

SELECT * FROM topics WHERE id_author!=1;

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

IS NOT NULLОтбираются строки, имеющие значения в указанном поле

SELECT * FROM topics WHERE id_author IS NOT NULL;

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

IS NULLОтбираются строки, не имеющие значения в указанном поле

SELECT * FROM topics WHERE id_author IS NULL;

SELECT * FROM topics WHERE id_author BETWEEN 1 AND 3;

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

IN (значение содержится)Отбираются значения, соответствующие указанным

SELECT * FROM topics WHERE id_author IN (1, 4);

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

NOT IN (значение не содержится)Отбираются значения, кроме указанных

SELECT * FROM topics WHERE id_author NOT IN (1, 4);

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

LIKE (соответствие)Отбираются значения, соответствующие образцу

SELECT * FROM topics WHERE topic_name LIKE ‘вел%’;

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from selectВозможные метасимволы оператора LIKE будут рассмотрены ниже.

NOT LIKE (не соответствие)Отбираются значения, не соответствующие образцу

SELECT * FROM topics WHERE topic_name NOT LIKE ‘вел%’;

Метасимволы оператора LIKE

Поиск с использованием метасимволов может осуществляться только в текстовых полях.

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select

На сегодня достаточно. В следующем уроке мы научимся составлять запросы к двум и более таблицам. А пока попробуйте самостоятельно составить запросы к таблице posts (сообщения).

Видеоуроки php + mysql

Если этот сайт оказался вам полезен, пожалуйста, посмотрите другие наши статьи и разделы.

Источник

SQL запросы быстро. Часть 1

Введение

Язык SQL очень прочно влился в жизнь бизнес-аналитиков и требования к кандидатам благодаря простоте, удобству и распространенности. Из собственного опыта могу сказать, что наиболее часто SQL используется для формирования выгрузок, витрин (с последующим построением отчетов на основе этих витрин) и администрирования баз данных. И поскольку повседневная работа аналитика неизбежно связана с выгрузками данных и витринами, навык написания SQL запросов может стать фактором, из-за которого кандидат или получит преимущество, или будет отсеян. Печальная новость в том, что не каждый может рассчитывать получить его на студенческой скамье. Хорошая новость в том, что в изучении SQL нет ничего сложного, это быстро, а синтаксис запросов прост и понятен. Особенно это касается тех, кому уже доводилось сталкиваться с более сложными языками.

Обучение SQL запросам я разделил на три части. Эта часть посвящена базовому синтаксису, который используется в 80-90% случаев. Следующие две части будут посвящены подзапросам, Join’ам и специальным операторам. Цель гайдов: быстро и на практике отработать синтаксис SQL, чтобы добавить его к арсеналу навыков.

Практика

Введение в синтаксис будет рассмотрено на примере открытой базы данных, предназначенной специально для практики SQL. Чтобы твое обучение прошло максимально эффективно, открой ссылку ниже в новой вкладке и сразу запускай приведенные примеры, это позволит тебе лучше закрепить материал и самостоятельно поработать с синтаксисом.

Кликнуть здесь

После перехода по ссылке можно будет увидеть сам редактор запросов и вывод данных в центральной части экрана, список таблиц базы данных находится в правой части.

Структура sql-запросов

Общая структура запроса выглядит следующим образом:

Разберем структуру. Для удобства текущий изучаемый элемент в запроса выделяется CAPS’ом.

SELECT, FROM

SELECT, FROM — обязательные элементы запроса, которые определяют выбранные столбцы, их порядок и источник данных.

Выбрать все (обозначается как *) из таблицы Customers:

Выбрать столбцы CustomerID, CustomerName из таблицы Customers:

WHERE

WHERE — необязательный элемент запроса, который используется, когда нужно отфильтровать данные по нужному условию. Очень часто внутри элемента where используются IN / NOT IN для фильтрации столбца по нескольким значениям, AND / OR для фильтрации таблицы по нескольким столбцам.

Фильтрация по одному условию и одному значению:

Фильтрация по одному условию и нескольким значениям с применением IN (включение) или NOT IN (исключение):

Фильтрация по нескольким условиям с применением AND (выполняются все условия) или OR (выполняется хотя бы одно условие) и нескольким значениям:

GROUP BY

GROUP BY — необязательный элемент запроса, с помощью которого можно задать агрегацию по нужному столбцу (например, если нужно узнать какое количество клиентов живет в каждом из городов).

При использовании GROUP BY обязательно:

Группировка количества клиентов по стране и городу:

Группировка продаж по ID товара с разными агрегатными функциями: количество заказов с данным товаром и количество проданных штук товара:

Группировка продаж с фильтрацией исходной таблицы. В данном случае на выходе будет таблица с количеством клиентов по городам Германии:

Переименование столбца с агрегацией с помощью оператора AS. По умолчанию название столбца с агрегацией равно примененной агрегатной функции, что далее может быть не очень удобно для восприятия.

HAVING

HAVING — необязательный элемент запроса, который отвечает за фильтрацию на уровне сгруппированных данных (по сути, WHERE, но только на уровень выше).

Фильтрация агрегированной таблицы с количеством клиентов по городам, в данном случае оставляем в выгрузке только те города, в которых не менее 5 клиентов:

В случае с переименованным столбцом внутри HAVING можно указать как и саму агрегирующую конструкцию count(CustomerID), так и новое название столбца number_of_clients:

Пример запроса, содержащего WHERE и HAVING. В данном запросе сначала фильтруется исходная таблица по пользователям, рассчитывается количество клиентов по городам и остаются только те города, где количество клиентов не менее 5:

ORDER BY

ORDER BY — необязательный элемент запроса, который отвечает за сортировку таблицы.

Простой пример сортировки по одному столбцу. В данном запросе осуществляется сортировка по городу, который указал клиент:

Осуществлять сортировку можно и по нескольким столбцам, в этом случае сортировка происходит по порядку указанных столбцов:

По умолчанию сортировка происходит по возрастанию для чисел и в алфавитном порядке для текстовых значений. Если нужна обратная сортировка, то в конструкции ORDER BY после названия столбца надо добавить DESC:

Обратная сортировка по одному столбцу и сортировка по умолчанию по второму:

JOIN — необязательный элемент, используется для объединения таблиц по ключу, который присутствует в обеих таблицах. Перед ключом ставится оператор ON.

Запрос, в котором соединяем таблицы Order и Customer по ключу CustomerID, при этом перед названиям столбца ключа добавляется название таблицы через точку:

Нередко может возникать ситуация, когда надо промэппить одну таблицу значениями из другой. В зависимости от задачи, могут использоваться разные типы присоединений. INNER JOIN — пересечение, RIGHT/LEFT JOIN для мэппинга одной таблицы знаениями из другой,

Внутри всего запроса JOIN встраивается после элемента from до элемента where, пример запроса:

Другие типы JOIN’ов можно увидеть на замечательной картинке ниже:

php select from select. Смотреть фото php select from select. Смотреть картинку php select from select. Картинка про php select from select. Фото php select from select
В следующей части подробнее поговорим о типах JOIN’ов и вложенных запросах.

При возникновении вопросов/пожеланий, всегда прошу обращаться!

Источник

mysql_query

mysql_query — Посылает запрос MySQL

Данный модуль устарел, начиная с версии PHP 5.5.0, и удалён в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API. Альтернативы для данной функции:

Описание

Список параметров

Запрос не должен заканчиваться точкой с запятой. Данные в запросе должны быть корректно проэкранированы.

Возвращаемые значения

Для запросов SELECT, SHOW, DESCRIBE, EXPLAIN и других запросов, возвращающих результат из нескольких рядов, mysql_query() возвращает дескриптор результата запроса ( resource ), или false в случае возникновения ошибки.

Для других типов SQL-запросов, INSERT, UPDATE, DELETE, DROP и других, mysql_query() возвращает true в случае успешного выполнения и false в случае возникновения ошибки.

Полученный дескриптор результата нужно передать в функцию mysql_fetch_assoc() или любую другую функцию, работающую с результатами запросов.

Используйте mysql_num_rows() для выяснения количества рядов в результате SELECT-запроса или mysql_affected_rows() для выяснения количества обработанных рядов запросами DELETE, INSERT, REPLACE и UPDATE.

Примеры

Пример #1 Неверный запрос

Пример #2 Верный запрос

// Эти данные, к примеру, могли быть получены от пользователя
$firstname = ‘fred’ ;
$lastname = ‘fox’ ;

Смотрите также

User Contributed Notes 26 notes

Simulating an atomic operation for application locks using mysql.

$q = «update `table` set `LOCK`=’F’ where `ID`=’1′»;
$lock = mysql_affected_rows();

If we assume
NOT LOCKED = «» (empty string)
LOCKED = ‘F’

then if the column LOCK had a value other than F (normally should be an empty string) the update statement sets it to F and set the affected rows to 1. Which mean than we got the lock.
If affected rows return 0 then the value of that column was already F and somebody else has the lock.

The secret lies in the following statement taken from the mysql manual:
«If you set a column to the value it currently has, MySQL notices this and does not update it.»

Of course all this is possible if the all application processes agree on the locking algorithm.

mysql_query doesnt support multiple queries, a way round this is to use innodb and transactions

this db class/function will accept an array of arrays of querys, it will auto check every line for affected rows in db, if one is 0 it will rollback and return false, else it will commit and return true, the call to the function is simple and is easy to read etc
———-

function transaction($q_array) <
$retval = 1;

if($retval == 0) <
$this->rollback();
return false;
>else <
$this->commit();
return true;
>
>

/* Create database connection object */
$database = new MySQLDB;

// then from anywhere else simply put the transaction queries in an array or arrays like this:

$q = array (
array(«query» => «UPDATE table WHERE something = ‘something'»),
array(«query» => «UPDATE table WHERE something_else = ‘something_else'»),
array(«query» => «DELETE FROM table WHERE something_else2 = ‘something_else2′»),
);

Regarding the idea for returning all possible values of an enum field, the mySQL manual says that «SHOW COLUMNS FROM table LIKE column» should be used to do this.

The function below (presumes db connection) will return an array of the possible values of an enum.

function GetEnumValues($Table,$Column)
<
$dbSQL = «SHOW COLUMNS FROM «.$Table.» LIKE ‘».$Column.»‘»;
$dbQuery = mysql_query($dbSQL);

$EnumValues = substr($EnumValues, 6, strlen($EnumValues)-8);
$EnumValues = str_replace(«‘,'»,»,»,$EnumValues);

This is just a quick example to show how to do it, some tidying up needs to be done (ie checking if the field is actually an enum) before it is perfect.

This project implements a wrapper to mysql functions in PHP7.0+

tested and working fine =)

When trying to INSERT or UPDATE and trying to put a large amount of text or data (blob) into a mysql table you might run into problems.

In mysql.err you might see:
Packet too large (73904)

You would just replace maxsize with the max size you want to insert, the default is 65536

It should be noted that mysql_query can generate an E_WARNING (not documented). The warning that I hit was when the db user did not have permission to execute a UDF.

Expected behavior would be like an Invalid SQL statement, where there is no E_WARNING generated by mysql_query.

Warning: mysql_query() [function.mysql-query]: Unable to save result set in filename.php

The mysql_errno is 1370 and the mysql_error is:

execute command denied to user ‘username’@’%’ for routine ‘database_name.MyUDF’

If, like me, you come from perl, you may not like having to use sprintf to ‘simulate’ placeholders that the DBI package from perl provides. I have created the following wrapper function for mysql_query() that allows you to use ‘?’ characters to substitute values in your DB queries. Note that this is not how DBI in perl handles placeholders, but it’s pretty similar.

// oops, wrong userid or passwd
else <
echo «Invalid username and password combination.\n» ;
>
?>

When you run a select statement and receive a response, the data types of your response will be a string regardless of the data type of the column.

Use this to neatly insert data into a mysql table:

I believe there is a typo in celtic at raven-blue dot com version with:

I think you really ment:

Keep in mind when dealing with PHP & MySQL that sending a null-terminated string to a MySQL query can be misleading if you use echo($sql) in PHP because the null terminator may not be visible.

For example (this assumes connection is already made),
$string1 = «mystring\0»;
$string2 = «mystring»;

$query1 = «SELECT * FROM table WHERE mystring='».$string1.»‘»
$query2 = «SELECT * FROM table WHERE mystring='».$string2.»‘»

//but printing these queries to the screen will provide the same result
echo($result1);
echo($result2);

Not knowing this could lead to some mind-numbing troubleshooting when dealing with any strings with a null terminator. So now you know! 🙂

this could be a nice way to print values from 2 tables with a foreign key. i have not yet tested correctly but it should work fine.

Here’s a parameterised query function for MySQL similar to pg_query_params, I’ve been using something similar for a while now and while there is a slight drop in speed, it’s far better than making a mistake escaping the parameters of your query and allowing an SQL injection attack on your server.

# Parameterised query implementation for MySQL (similar PostgreSQL’s PHP function pg_query_params)
# Example: mysql_query_params( «SELECT * FROM my_table WHERE col1=$1 AND col2=$2», array( 42, «It’s ok» ) );

For all you programmers out there getting the ‘Command out of synch’ errors when executing a stored procedure call:

There are known bugs related to this issue, and the best workaround for avoiding this error seems to be switching to mysqli.

Still, I needed mysql to also handle these calls correctly.
The error is normally related to wrong function call sequences, though the bug report at http://bugs.php.net/bug.php?id=39727 shows otherwise.

For me, after commenting out hundreds of lines and several introspection calls to parse the procedure information (using information_schema and ‘SHOW’ extensions), I still got the same error.
The first result is returned, because I initiated my connection using the MYSQL_MULTI_RESULTS value of 131072 (forget this and you will never get any output, but an error message stating mysql cannot return results in this context)

After testing with this code (sproc2 simply calls ‘SELECT * FROM sometable’), I found the error must be in the mysql library/extension. Somehow, mysql does not handle multiple resultsets correctly, or is at least missing some functionality related to handling multiple results.

So if you ever make a uniform database accessing interface and implement stored procedures/prepared statements (or classes for it), this could be a solution if you really wish to enable stored procedures.

Still, be aware that this is really a serious flaw in your design (and IMHO, the mysql extension)

Also see the documentation for mysqli on mysqli_query, which seems to be working fine.

here’s a script for parsing a *.sql file (tested only on dumps created with phpMyAdmin) which is short and simple (why do people say «here’s a short and simple script» and it has a 100 lines?). the script skips comments and allows ; to be present within the querys

I much prefer to use the same syntax for single INSERT, REPLACE and UPDATE queries as it is easier to read and keeps my code shorter (no seperate building of insert and update values)

INSERT INTO table SET x=’1′, y=3
UPDATE table SET x=’2′ WHERE y=3

So if your using a function to build your query, you will only ever need to code the «field=value, field2=value2» part for any query.

/* malformed query /*
$rs = mysql_query(«SELECT `foo` FRO `bar`»);
if($rs) <
echo «This will never be echoed»;
>
?>

One way to reduce the dangers of queries like the dlete command above that dletes the whole DB is to use limits wherever possible.

EG. If you have a routine that is only deisnged to delete 1 record, add ‘LIMIT 1’ to the end of the command. This way you’ll only lose one record if someone does something stupid.

Just don’t trust ANY data that is sent to your script.

If you need to execute sevaral SQL commands in a row (usually called batcg SQL) using PHP you canot use mysql_query() since it can execute single command only.

Here is simple but effective function that can run batch SQL commands. Take cere, if string contains semicolon (;) anywhere except as command delimiter (within string expression for example) function will not work.

For those of you whom spent hours bashing your brains against the keyboard wondering why your non-English characters are output as question marks. Try the following:

?>

Simply run the query «set names ‘utf8’ » against the MySQL DB and your output should appear correct.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *