Главная arrow Программирование arrow HTML arrow PHP: примеры работы с MySQL Tuesday, December 12 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

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

Поделиться:

PHP: примеры работы с MySQL Версия для печати
Написал microsin   
13.08.2006

1. Если нужно через SQL-запрос передать содержимое переменной с пробелами, например, чтобы заполнить этой переменной поле в таблице, то нужно заключить строку с пробелами в одинарные кавычки (в таблице 4 поля, первые 2 из них номер строки и datetime):
$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. Как поменять значение записи:
...
$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 переменная с новым содержанием столбца в записи (значение из выпадающего списка)
Комментарии:
1. LIMIT 1 в запросе означает, что меняется только одна запись, удовлетворяющая запросу.
2. В SQL-запросе кавычки, с которых содержатся имена столбцов отличаются (это ВАЖНО!) от тех, в которых передаются значения переменных $DescriptionEd и $cbAcronymsList.

6. Как получить информацию об ошибке в SQL-запросе:
$query_result = mysql_query($query, $link);
if (false === $query_result)
{
   echo mysql_errno() . ": " . mysql_error() .'<br>';
   die ('<b>Error database SQL query</b><br>');
}

Последнее обновление ( 17.10.2007 )
 

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

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

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

< Пред.   След. >

Top of Page
 
microsin © 2017