|
|
|
| Добрый день есть база данных с параметрами
NAZ1 NAZWA LANG
$K#.D SG RU
$K#.d N-Serie RU
Как вывести данные по параметру NAZ1=$K#.D
вот пример запроса.
$result=mysql_query("select * from kat_naz WHERE NAZ1=$K#.D");
while($data1=mysql_fetch_array($result)){
$naz1=$data1['NAZWA'];
echo"$naz1";
}
|
Даже при такой таблице
NAZ1 NAZWA LANG
$###- BEDFORD RU
Даные все равно не выводятся!!)))))
Тоесть один параметр $###-
Данные не выводиться а выдает ошибку
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
На скоклько я понимаю он не понимает регистр!
Как эту проблему решить? | |
|
|
|
|
|
|
|
для: alex_fear
(22.02.2011 в 16:39)
| | Дело в том, что PHP и MySQL - это две разные среды, ошибки, которые возникают в MySQL, PHP не может показать при всем желании. Эти ошибки нужно обрабатывать специально, причем всегда - это позволит вам съэкономить массу времени. Понятно, что проверять состояние дескриптора $result лениво, особенно, когда все работает. Однако, такая проверка позволяет экономить огромное количество времени при отладке, вы всегда будете видить, что произошла ошибка на стороне MySQL и что это за ошибка. Попробуйте исправить код следующим образом
<?php
$query = "select * from kat_naz WHERE NAZ1=$K#.D";
$result=mysql_query($query);
if(!$result) exit("Ошибка - ".mysql_error());
if(mysql_num_rows($result))
{
while($data1=mysql_fetch_array($result))
{
$naz1=$data1['NAZWA'];
echo"$naz1";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(22.02.2011 в 16:49)
| | Вот ошибка You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 | |
|
|
|
|
|
|
|
для: alex_fear
(22.02.2011 в 17:08)
| | Обычно, еще хорошо выводить сам запрос, чтобы было понятно, как он выглядит. Когда возвращается такое сообщение, как правило, речь идет о кавычках (Trianon ниже уже написал об этом). В вашем случае, скорее всего, MySQL ожидает вместо
<?php
$query = "select * from kat_naz WHERE NAZ1=$K#.D";
?>
| следующий запрос
<?php
$query = "select * from kat_naz WHERE NAZ1='$K#.D'";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(22.02.2011 в 17:19)
| | При кавычках выдает Unknown column '$K' in 'where clause' | |
|
|
|
|
|
|
|
для: alex_fear
(22.02.2011 в 17:22)
| | Так, выведите запрос в окно браузера, как он выглядит?
| |
|
|
|
|
|
|
|
для: cheops
(22.02.2011 в 17:25)
| | Вобщем сделал вот так
<?php
$prob='$K#.D';
$query = "select * from kat_naz WHERE NAZ1='$prob'";
$result=mysql_query($query);
if(!$result) exit("Ошибка - ".mysql_error());
if(mysql_num_rows($result))
{
while($data1=mysql_fetch_array($result))
{
$naz1=$data1['NAZWA'];
echo"$naz1";
}
}
?>
|
И вроде заработало! | |
|
|
|
|
|
|
|
для: alex_fear
(22.02.2011 в 18:32)
| | А, у вас $ просто символ, а не начало переменной? Тогда у вас работал бы и такой запрос
<?php
$query = 'select * from kat_naz WHERE NAZ1="$K#.D"';
?>
| и такой
<?php
$query = "select * from kat_naz WHERE NAZ1='\$K#.D'";
?>
| Дело в том, что в двойных кавычках $ рассматривается как начало PHP-переменной и её нужно экранировать \ или помещать в одиночные кавычки, где такой интерпретации не происходит. Ваш вариант, безусловно, тоже верный. | |
|
|
|
|
|
|
|
для: cheops
(22.02.2011 в 18:47)
| | Вобщем столкнулся с такой проблемой делаю вот такой запрос
$naz=$data1['NAZ'];
echo $naz ;
$result2=mysql_query("select * from kat_naz WHERE NAZ='$naz'");
while($data2=mysql_fetch_array($result2)){
echo $data2['NAZ'];
|
параметр $data1['NAZ']=(bl
а выводит вот такой результат
$data2['NAZ']=(Bl(bL(bl
Хотя должно только (bl
Проблема с регистром(( | |
|
|
|
|
|
|
|
для: alex_fear
(23.02.2011 в 12:46)
| | какой тип, кодировка и сопоставление регистров (collation) у поля kat_naz ?
если ..._ci (case insensitive / нечувствительно к регистру) - то ничего удивительного, в общем-то. | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2011 в 12:49)
| | ОК | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2011 в 12:49)
| | И еще как заставить воспринемать вот такой символ ',J
если задаю параметр
$naz='',J';
mysql_query("select * from kat_naz WHERE NAZ='$naz'")
|
Оно ',J воспринемает как " как это убрать? | |
|
|
|
|
|
|
|
для: alex_fear
(23.02.2011 в 13:16)
| | Литеральный php-текст, перед тем, как обрамить его апострофами, необходимо подвергнуть экранированию спецсимволов. Делается это путем добавления \ перед каждым \ ' "
Литеральный SQL-текст, перед тем, как обрамить его апострофами, необходимо подвергнуть экранированию спецсимволов. Делается это путем добавления \ перед каждым \ ' " и некоторыми другими. Обычно применяется функция mysql_real_escape_string() | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2011 в 13:36)
| | Проблему пока решил но кажится что не будет экранировать % _ вот эти знаки? Или я не прав? | |
|
|
|
|
|
|
|
для: alex_fear
(23.02.2011 в 14:33)
| | их и не требуется экранировать,.
Как минимум пока Вы не решаете задачу создания шаблона для операции LIKE.
Если Вы LIKE не применяете, символы % и _ являются самыми обычными, не специальными.
То же самое касается левого операнда этой операции. | |
|
|
|
|
|
|
|
для: alex_fear
(22.02.2011 в 16:39)
| | строковые константы в SQL-запросе нужно в кавычки заключать. | |
|
|
|