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>');
}
|