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

Форум MySQL

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

 

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

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

тема: не работает оператор select
 
 автор: laki   (23.04.2010 в 18:45)   письмо автору
 
 

не работает select!!!!
есть тб room с полями id_room, box (text), nomer(text), mest (int).
методом get получаю переменные $roomx и $korpus. Переменная $roomx содержит числа и буквы, например 111а.
пишу запрос:
$sql="SELECT * FROM `room` WHERE box='".$korpus."' AND nomer='".$roomx."'";

не осуществляет выборку((( помогите народ!!!

  Ответить  
 
 автор: serenya1983   (23.04.2010 в 18:55)   письмо автору
 
   для: laki   (23.04.2010 в 18:45)
 

может нада убедиться что через GET переменные дейсвительном получаются и не пустые и учитывается регистр текста!?

  Ответить  
 
 автор: neadekvat   (23.04.2010 в 18:57)   письмо автору
 
   для: laki   (23.04.2010 в 18:45)
 

Вы уверены, что в бд есть записи, удовлетворяющие условию?

  Ответить  
 
 автор: laki   (23.04.2010 в 19:17)   письмо автору
 
   для: neadekvat   (23.04.2010 в 18:57)
 

да. данные есть 100%

  Ответить  
 
 автор: Trianon   (23.04.2010 в 19:01)   письмо автору
 
   для: laki   (23.04.2010 в 18:45)
 

Для начала неплохо вывести то, что в $sql получилось.

  Ответить  
 
 автор: laki   (23.04.2010 в 19:12)   письмо автору
 
   для: Trianon   (23.04.2010 в 19:01)
 

<?php
$roomx=$_GET['nom'];
$korpus=$_GET['korp'];

$server="localhost";
$dbname="rasp";
$username="root";
$userpass="";
$servcon=mysql_connect($server,$username,$userpass);
mysql_query("SET NAMES utf8");
mysql_select_db($dbname,$servcon);

$sql="SELECT * FROM `room` WHERE box='".$korpus."' AND nomer='".$roomx."'";
$res=mysql_query($sql, $servcon);
print "<table BORDER=3 ALIGN=CENTER VALIGN=CENTER >";
while ($rs=mysql_fetch_array($res))
{
print " <tr><td>ID-".$rs['id_room'] ."</td><td> BOX-".$rs['box'] ."</td><td> Nomber-".$rs['nomer'] ."</td></tr>";
}
print "</table>";
print $_GET['korp']."-". $_GET['nom'];
?>



это весь скрипт, все довольно примитивно, но что-то не работает...

  Ответить  
 
 автор: laki   (23.04.2010 в 19:21)   письмо автору
 
   для: Trianon   (23.04.2010 в 19:01)
 

прописала
print $res; вот что получилось - Resource id #3

  Ответить  
 
 автор: laki   (23.04.2010 в 19:26)   письмо автору
 
   для: Trianon   (23.04.2010 в 19:01)
 

делаю print $sql; в результате

SELECT * FROM `room` WHERE box='Б' AND nomer='111

  Ответить  
 
 автор: Trianon   (23.04.2010 в 19:37)   письмо автору
 
   для: laki   (23.04.2010 в 19:26)
 

И Вам не кажется, что запрос оборван?

  Ответить  
 
 автор: laki   (23.04.2010 в 19:44)   письмо автору
 
   для: Trianon   (23.04.2010 в 19:37)
 

не хватает вконце одной кавычки - ', это имеется ввиду?
но не могу найти в запросе ошибку!!! и еще раз говорю - меняю в таблице для поля nomer тип на int - все работает((, но этот тип мне не подходит, т.к. в поле могут быть и буквы

  Ответить  
 
 автор: neadekvat   (23.04.2010 в 20:15)   письмо автору
 
   для: laki   (23.04.2010 в 19:44)
 

А если написать так:
$sql="SELECT * FROM `room` WHERE box='$korpus' AND nomer='$roomx' ";

А вообще стоп, если поле числовое - зачем обрамлять в кавычки?
Перед подстановкой в бд преобразуйте в численный тип и подставляйте без кавычек: AND nomer=$roomx

  Ответить  
 
 автор: laki   (23.04.2010 в 22:22)   письмо автору
 
   для: neadekvat   (23.04.2010 в 20:15)
 

тип поля текстовый, но в нем числа либо число и текст, например 121 или 121а

  Ответить  
 
 автор: laki   (23.04.2010 в 19:11)   письмо автору
 
   для: laki   (23.04.2010 в 18:45)
 

переменные не пусты - отдельно вывожу - все ок.
если меняю в бд для поля nomer тип на int - то все отлично работает. Не хочет с текстовым полем работать((

  Ответить  
 
 автор: oliss   (23.04.2010 в 20:20)   письмо автору
 
   для: laki   (23.04.2010 в 19:11)
 

Так введите этот запрос в ПМА -->SQL
SELECT * FROM `room` WHERE `box`='Б' AND `nomer` =111
и посмотрите, что он вам ответит.

  Ответить  
 
 автор: laki   (23.04.2010 в 22:25)   письмо автору
 
   для: oliss   (23.04.2010 в 20:20)
 

ввожу запрос в sql редакторе - все норм, прям мистика какая-то!!

  Ответить  
 
 автор: neadekvat   (23.04.2010 в 23:06)   письмо автору
 
   для: laki   (23.04.2010 в 22:25)
 

мб вы с кодировкой чего напутали?

  Ответить  
 
 автор: serenya1983   (24.04.2010 в 00:27)   письмо автору
 
   для: neadekvat   (23.04.2010 в 23:06)
 

в таблице кодировка
mysql_query("SET NAMES utf8");
а в GET такае же?

  Ответить  
 
 автор: laki   (24.04.2010 в 00:44)   письмо автору
 
   для: neadekvat   (23.04.2010 в 23:06)
 

над кодировкай как раз думаю

  Ответить  
 
 автор: laki   (26.04.2010 в 10:51)   письмо автору
 
   для: laki   (23.04.2010 в 18:45)
 

все, проблема решена!!! юююххххуууу!!!!!!!!
$roomx=substr($_GET['nom'], 0, -8);
$korpus=$_GET['korp'];
вот и все) по крайней мере работает!

  Ответить  
 
 автор: neadekvat   (26.04.2010 в 22:33)   письмо автору
 
   для: laki   (26.04.2010 в 10:51)
 

Вы можете четко сформулировать причину отказа корректной работы (т.е. работать так, как вы бы хотели) до ваших действий и после? И что именно вы сделали, назвать можете?
Если хотя бы на один вопрос ответ "нет" - выкидываете нахрен и капаете с самого начала. А то вот так и начинают рождаться программы "тута ничо не трогать, тьфу-тьфу работает".

  Ответить  
Rambler's Top100
вверх

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