Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Где ошибка в запросе?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
xaser
Отправлено: 23 Июня, 2012 - 00:51:51
Post Id



Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Есть строка запроса:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM BALANCE WHERE `B_DokVid`='$DokVid' AND `B_NomerDok`='$DokNomer' AND `B_Filial`='$filial' AND `B_Time`='$DokVremia' AND `B_Dt`=$DokDt AND `B_Kt`=$DokKt AND `B_Comment`='$DokComment' AND `B_NomStroki`='$Dopolnitelno' LIMIT 1


В результате выполнения ошибка:
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 'WHERE `B_DokVid`='РасходнаяНакладная' AND `B_NomerDok`='1-0000191' AND `B_Filial' at line 12

(Версия MySQL 5.1)
помогите разобраться... вроде всё правильно?!
 
 Top
Alho
Отправлено: 23 Июня, 2012 - 01:34:21
Post Id



Посетитель


Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012  


Помог: 11 раз(а)




В таких случаях очень хорошо помогает echo перед запросом, а потом исправление самого запроса в любом визуальной прослойкой для бд - хоть mysql workbench, хоть phpmyadmin/
 
 Top
xaser
Отправлено: 23 Июня, 2012 - 01:40:14
Post Id



Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




хм... я почему-то не подумал за РНРадмин... буду пробовать...
 
 Top
vanicon
Отправлено: 23 Июня, 2012 - 01:42:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. SELECT * FROM `BALANCE` WHERE `B_DokVid`= '$DokVid' AND `B_NomerDok`= '$DokNomer' AND `B_Filial`='$filial' AND `B_Time`='$DokVremia' AND `B_Dt`= '$DokDt' AND `B_Kt`= '$DokKt' AND `B_Comment`= '$DokComment' AND `B_NomStroki`= '$Dopolnitelno' LIMIT 1
  3.  


-----
Так было, так есть и так будет
 
 Top
xaser
Отправлено: 23 Июня, 2012 - 01:45:25
Post Id



Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. `B_Dt`= '$DokDt' AND `B_Kt`= '$DokKt'

это числовые!!!...
(Добавление)
я не пойму "at line 12" - это где????
 
 Top
vanicon
Отправлено: 23 Июня, 2012 - 01:50:40
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Попробуйте сделать вот как:
PHP:
скопировать код в буфер обмена
  1. echo "SELECT * FROM `BALANCE` WHERE `B_DokVid`= '$DokVid' AND `B_NomerDok`= '$DokNomer' AND `B_Filial`='$filial' AND `B_Time`='$DokVremia' AND `B_Dt`= '$DokDt' AND `B_Kt`= '$DokKt' AND `B_Comment`= '$DokComment' AND `B_NomStroki`= '$Dopolnitelno' LIMIT 1";

И посмотрите на запрос на экране, скорее всего в переменных дело.

(Отредактировано автором: 23 Июня, 2012 - 01:50:55)



-----
Так было, так есть и так будет
 
 Top
xaser
Отправлено: 23 Июня, 2012 - 01:51:34
Post Id



Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




phpMyAdmin ест запрос без ошибок!

вот эхо запроса:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `BALANCE` WHERE `B_DokVid`='РасходнаяНакладная' AND `B_NomerDok`='1-0000191' AND `B_Filial`='4' AND `B_Time`='20:02:03' AND `B_Dt`=0 AND `B_Kt`=259.21 AND `B_Comment`='' AND `B_NomStroki`='-' LIMIT 1
 
 Top
vanicon
Отправлено: 23 Июня, 2012 - 01:54:45
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




А можно посмотреть на код самого запроса с php функциями


-----
Так было, так есть и так будет
 
 Top
xaser
Отправлено: 23 Июня, 2012 - 02:01:13
Post Id



Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. list($DokVid,$DokNomer,$DokData,$DokVremia,$DokKontragent,$DokDt,$DokKt,$DokComment,$Dopolnitelno) = explode("{", $item);
  2. if(empty($DokVid)){continue;}
  3.  
  4. $DokVid        =mysql_real_escape_string($DokVid);
  5. $DokNomer      =mysql_real_escape_string($DokNomer);
  6. $DokData       =mysql_real_escape_string($DokData);
  7. $DokVremia     =mysql_real_escape_string($DokVremia);
  8. $DokKontragent =mysql_real_escape_string($DokKontragent);
  9. $DokDt         =mysql_real_escape_string($DokDt);
  10. $DokKt         =mysql_real_escape_string($DokKt);
  11. $DokComment    =mysql_real_escape_string(trim($DokComment));
  12. $Dopolnitelno  =mysql_real_escape_string(trim($Dopolnitelno));
  13.  
  14. /* B_Date       B_Time  B_Filial        B_Nomer         B_NomerDok      B_Klient        B_DokVid        B_Dt    B_Kt    B_Comment       B_NomStroki */
  15. $quer="SELECT * from `BALANCE` where `B_DokVid`='$DokVid' AND `B_NomerDok`='$DokNomer' AND `B_Filial`='$filial' AND `B_Time`='$DokVremia' AND `B_Dt`=$DokDt AND `B_Kt`=$DokKt AND `B_Comment`='$DokComment' AND `B_NomStroki`='$Dopolnitelno' LIMIT 1";
  16.  
  17. $qu=mysql_query($quer);
  18.  
  19. if (mysql_num_rows($qu)>0) {
  20.         $qq="UPDATE BALANCE SET
  21.         `B_Date`='$yy-$mm-$dd',
  22.         `B_Time`='$DokVremia',
  23.         `B_Filial`='$filial',
  24.         `B_NomerDok`='$DokNomer',
  25.         `B_Klient`='$DokKontragent',
  26.         `B_DokVid`='$DokVid',
  27.         `B_Dt`=$DokDt,
  28.         `B_Kt`=$DokKt,
  29.         `B_Comment`='$DokComment',
  30.         `B_NomStroki`='$Dopolnitelno',
  31.         WHERE `B_DokVid`='$DokVid' AND `B_NomerDok`='$DokNomer' AND `B_Filial`='$filial'";
  32. }else{
  33.         $qq="SELECT MAX(`B_Nomer`) as mNom from BALANCE where `B_Klient`='$DokKontragent' AND `B_Filial`='$filial'"; $res=mysql_query($qq);
  34.         unset($result);$result=array();
  35.         $LastNumber=0;
  36.         if ($res){while($row = mysql_fetch_array($res)){$result[] = $row;}
  37.                 $LastNumber=$result[0]['mNom'];
  38.         }
  39.         $LastNumber++;
  40.         $qq="INSERT INTO BALANCE (
  41.         `B_Date`,`B_Time`,`B_Filial`,`B_NomerDok`,`B_Klient`,`B_DokVid`,`B_Dt`,`B_Kt`,`B_Comment`,`B_Nomer`,`B_NomStroki`
  42.         ) VALUES (
  43.         '$yy-$mm-$dd','$DokVremia','$filial','$DokNomer','$DokKontragent','$DokVid',$DokDt,$DokKt,'$DokComment',$LastNumber,'$Dopolnitelno'
  44.         )";
  45. }
  46.     mysql_query($qq) or die(mysql_error());

(Отредактировано автором: 23 Июня, 2012 - 02:03:57)

 
 Top
vanicon
Отправлено: 23 Июня, 2012 - 02:09:15
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Попробуйте заменить 15 строку на вот это:
PHP:
скопировать код в буфер обмена
  1.  
  2. $quer = "SELECT * from `BALANCE` where `B_DokVid`='".$DokVid."' AND `B_NomerDok`='".$DokNomer."' AND `B_Filial`='".$filial."' AND `B_Time`='".$DokVremia."' AND `B_Dt`= $DokDt AND `B_Kt`= $DokKt AND `B_Comment`='".$DokComment."' AND `B_NomStroki`='".$Dopolnitelno."' LIMIT 1";
  3.  


-----
Так было, так есть и так будет
 
 Top
xaser
Отправлено: 23 Июня, 2012 - 02:10:27
Post Id



Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




ест легко...
(Добавление)
vanicon пишет:
Попробуйте заменить 15 строку на вот это:
PHP:
скопировать код в буфер обмена



$quer = "SELECT * from `BALANCE` where `B_DokVid`='".$DokVid."' AND `B_NomerDok`='".$DokNomer."' AND `B_Filial`='".$filial."' AND `B_Time`='".$DokVremia."' AND `B_Dt`= $DokDt AND `B_Kt`= $DokKt AND `B_Comment`='".$DokComment."' AND `B_NomStroki`='".$Dopolnitelno."' LIMIT 1";



попробовал, результат тот же... Полтергейст какой-то! ((
Прикреплено изображение (Нажмите для увеличения)
Безымянный.jpg
 
 Top
vanicon
Отправлено: 23 Июня, 2012 - 02:16:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Ок, сейчас попробую у себя тоже самое...


-----
Так было, так есть и так будет
 
 Top
xaser
Отправлено: 23 Июня, 2012 - 02:28:03
Post Id



Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




может запрос слишком длинный? есть ограничения по длине? ... хотя МайАдмин сработал...
 
 Top
vanicon
Отправлено: 23 Июня, 2012 - 02:32:30
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




У меня вот это работает:
PHP:
скопировать код в буфер обмена
  1.  
  2. $link = mysql_connect("localhost", "root", "*********");
  3. mysql_select_db('test', $link);
  4.  
  5. $DokVid        = 'расходнаянакладная';
  6. $DokNomer      = '1-09089890';
  7. $DokDt         = '0.00';
  8. $DokKt         = '259.5';
  9. $DokComment    = '';
  10. $filial        = '4';
  11. $DokVremia     = '20.00';
  12.  
  13. $DokVid        =mysql_real_escape_string($DokVid);
  14. $DokNomer      =mysql_real_escape_string($DokNomer);
  15. $DokData       =mysql_real_escape_string($DokData);
  16. $DokVremia     =mysql_real_escape_string($DokVremia);
  17. $DokKontragent =mysql_real_escape_string($DokKontragent);
  18. $DokDt         =mysql_real_escape_string($DokDt);
  19. $DokKt         =mysql_real_escape_string($DokKt);
  20. $DokComment    =mysql_real_escape_string(trim($DokComment));
  21. $Dopolnitelno  =mysql_real_escape_string(trim($Dopolnitelno));
  22.  
  23. $quer = "SELECT * from `BALANCE` where `B_DokVid`='$DokVid' AND `B_NomerDok`='$DokNomer' AND `B_Filial`='$filial' AND `B_Time`='$DokVremia' AND `B_Dt`=$DokDt AND `B_Kt`=$DokKt AND `B_Comment`='$DokComment' LIMIT 1";
  24. $qu = mysql_query($quer);
  25.  

Это Ваш запрос вроде... Но я типы в бд поставил всем строки, но раз в phpmyadmin выполняется то это не из за типов...


-----
Так было, так есть и так будет
 
 Top
xaser
Отправлено: 23 Июня, 2012 - 02:35:38
Post Id



Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




вот и я не пойму, на что ругается скрипт... не понимаю!!!!! (
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB