Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема со строками в запросе
 
 автор: han   (15.12.2005 в 15:50)   письмо автору
 
 

Подскажите пожалуйса
Написал сайт (разрабатывал на локальном сервере), когда разместил появились непонятные проблемы- перестали работать некоторые запросы а, точнее, те в которых встречались строки.
Например:
select 1=1 -выполняется нормально
select 'q'='q' - ошибка, и так вегда если в запросе есть строки, почему ?

привожу код в котором это тестировал:

<form>
<input TYPE="text" name = "qq" SIZE="150">
<input TYPE="submit">
</form>
<?
if(isset($qq))
{

$l_conn = mysql_connect("***","***", "***");

$result=mysql_db_query("***",$qq,$l_conn);
if(!$result)
{
echo $result;
echo mysql_error($l_conn);
}
while($line = mysql_fetch_array($result))
echo "<br>".$line[0];
}
?>

   
 
 автор: cheops   (15.12.2005 в 22:20)   письмо автору
 
   для: han   (15.12.2005 в 15:50)
 

А версия MySQL на сервере какая используется? Вообще не должно быть такого...

   
 
 автор: han   (16.12.2005 в 08:54)   письмо автору
 
   для: cheops   (15.12.2005 в 22:20)
 

Версия MySQL - 4.1.0-alpha-log
Программа и MySQL - находятся на разных хостах
при загрузке БД произошло повреждение кодировки, может из за этого что-то не правильно - из-за настроек кодировки не работают строковые функции ?
Хотя Insert работает и строки вставляются (русские с поврежденной кодировкой все заменяется на ????????)

   
 
 автор: Loki   (16.12.2005 в 09:16)   письмо автору
 
   для: han   (16.12.2005 в 08:54)
 

>Программа и MySQL - находятся на разных хостах
а сервер БД позволяет удаленное подключение? Что говорит хостер?

   
 
 автор: han   (16.12.2005 в 10:27)   письмо автору
 
   для: Loki   (16.12.2005 в 09:16)
 

Удаленные подключения позволяет, и некоторые SQL - запросы выполняюся корректно а некоторые нет (см. 1-е сообщение)

   
 
 автор: cheops   (16.12.2005 в 13:47)   письмо автору
 
   для: han   (16.12.2005 в 08:54)
 

alpha?! Это кому в голову взбрело alpha на сервер ставить? Обычно даже бетту не ставят, так как она содержит незначительные ошибки, а для alpha такие ошибки подобные тем, которые вы указали, рядовое явление - это очень сырая версия, которая обычно используется для отладки и поиска ошибок в продукте.

PS Проблема замены русских букв на ??????? можно решить так как это описывается в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=8208

   
 
 автор: han   (19.12.2005 в 14:34)   письмо автору
 
   для: cheops   (16.12.2005 в 13:47)
 


<?php
mysql_query 
("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
?> 


в моей версии (version---4.1.0-alpha-log) только переменные (найденные по SHOW SESSION VARIABLES):
character_set
character_sets
client_collation
convert_result_charset
причем при set caracter_set - пишет что такой переменной нет
client_collation не устанавливается и после SET client_collation = 'cp1251_general_ci'
все равно остается со значением latin1_swedish_ci
convert_result_charset - принимает два значения ON,OFF она вставляется нормально
может знаете, что делать ?
сменить сервер к сожалению не вариант

   
 
 автор: cheops   (19.12.2005 в 14:43)   письмо автору
 
   для: han   (19.12.2005 в 14:34)
 

А установка convert_result_charset в ON не приводит к появлению других переменных?

   
 
 автор: han   (19.12.2005 в 15:05)   письмо автору
 
   для: cheops   (19.12.2005 в 14:43)
 

она стоит в ON по умолчанию

   
 
 автор: han   (19.12.2005 в 16:57)   письмо автору
 
   для: cheops   (19.12.2005 в 14:43)
 

вообщемто все заработало, только не понял почему
у меня до этого таблицы создавалиль как CHARSET=cp1251
и при выводе в браузер они были (????????)
заменил на utf8 - заработало хотя кодировка отображения в браузере - 1251
а никаких переменных не менял

   
 
 автор: cheops   (19.12.2005 в 18:45)   письмо автору
 
   для: han   (19.12.2005 в 16:57)
 

Проблемы могут быть с поиском и сортировкой русского текста...

   
 
 автор: han   (20.12.2005 в 12:48)   письмо автору
 
   для: cheops   (19.12.2005 в 18:45)
 

Действительно появились проблемы с поиском select * where name='Имя' - выдает 0 строк при всегда,
вне зависимости есть такая запись или нет

   
 
 автор: han   (19.12.2005 в 12:30)   письмо автору
 
   для: han   (15.12.2005 в 15:50)
 

нашел косяк, только не могу понять почему он возникает, все дело в том
что когда я заускал этот скрипт на локальном сервере то
при вводе запроса в виде select 'q'='q' именно такой запрос у меня и отправлялся к MySQL
а когда сайт перенесли на хост, то когда я ввожу этот запрос то отправляется
: select \'q\'=\'q\' т.е. он почему-то добавляет лишние \
не подскажите отчего это

   
 
 автор: Loki   (19.12.2005 в 13:39)   письмо автору
 
   для: han   (19.12.2005 в 12:30)
 

Это защита от инъекций. Перед отправкой запроса воспользуйтесь функцией stripslashes

<?php 
$str 
"Is your name O\'reilly?"
// выводит: Is your name O'reilly? 
echo stripslashes($str); 
?> 

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования