Программирование HTML PHP: примеры работы с MySQL Tue, April 25 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


PHP: примеры работы с MySQL Печать
Добавил(а) microsin   

1. Если нужно через SQL-запрос передать содержимое переменной с пробелами, например, чтобы заполнить этой переменной поле в таблице, то нужно заключить строку с пробелами в одинарные кавычки (в таблице 4 поля, первые 2 из них номер строки и datetime):

< ?php
$param1 = 'Этот_текст_не_вызовет_ошибки_так_как_в_нем_нет_пробелов';
$param2 = 'А этот текст вызовет ошибку при выполнении запроса, если его 
не заключить в одинарные кавычки'
; $param2 = chr(0x27).$param2.chr(0x27); $query = "insert into ".$tablename." values(0,NOW(),$param1,$param2)"; $query_result = mysql_query($query, $link); if (false === $query_result) { echo mysql_errno() . ": " . mysql_error() .'< br>'; die ('< b>Error database SQL query< /b>< br>'); }

2. В поле типа DATETIME вставляем текущее время функцией now() (см. предыдущий пример). Если нужно вставить не текущее время, можно сделать так: ..., '". date("Y-m-d H-i-s", $date). "', ... 

Этот формат - для типа DATETIME. Если тип данных DATE, то надо использовать "Y-m-d", и если TIME, соответственно "H-i-s". Переменная $date здесь содержит дату/время, определенные функцией mktime.

3. Чтобы не было проблемы с русскоязычным текстом, хранимым в таблице, нужно при создании таблицы указать кодировку utf8_general_ci. Например, чтобы создать таблицу с 4-мя полями, где 2 последних из них должны хранить текст типа "Кириллица (Windows)", нужно выполнить такой SQL-запрос:

CREATE TABLE `tabAcronyms` (
`ID` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`DateTime` DATETIME NOT NULL ,
`Acronym` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`Descr` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
PRIMARY KEY ( `ID` ) 
);

4. Как сортировать результат запроса по определенному столбцу:

"SELECT * FROM $tablename ORDER BY $columnname"

Сортировка в обратном порядке (reverse):

"SELECT * FROM $tablename ORDER BY $columnname DESC"

5. Как поменять значение записи:

< ?php
...
$query = "UPDATE `$tablename` SET `Descr` = '$DescriptionEd' 
 WHERE `Acronym` ='$cbAcronymsList' LIMIT 1 ;";
$query_result = mysql_query($query, $link);
if (false === $query_result)
{
   echo mysql_error().'< br>';
   die ('Error database SQL query< br>');
}
... 

Здесь применяются переменные:

$tablename содержит имя таблицы, в которой меняется запись
$DescriptionEd содержит имя столбца, в котором меняется значение записи
$cbAcronymsList переменная с новым содержанием столбца в записи (значение из выпадающего списка)

LIMIT 1 в запросе означает, что меняется только одна запись, удовлетворяющая запросу. В SQL-запросе кавычки, с которых содержатся имена столбцов отличаются (это ВАЖНО!) от тех, в которых передаются значения переменных $DescriptionEd и $cbAcronymsList.

6. Как получить информацию об ошибке в SQL-запросе:

< ?php
$query_result = mysql_query($query, $link);
if (false === $query_result)
{
   echo mysql_errno() . ": " . mysql_error() .'< br>';
   die ('< b>Error database SQL query< /b>< br>');
}

 

 

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


Защитный код
Обновить

Top of Page