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
Форумы портала PHP.SU :: Версия для печати :: Помогите разобраться с выводом данных из переменной в базу данных
Форумы портала PHP.SU » » Вопросы новичков » Помогите разобраться с выводом данных из переменной в базу данных

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

1. n0nsence - 07 Марта, 2017 - 16:07:46 - перейти к сообщению
Здравствуйте. столкнулся вот с чем. Нужно из формы получить дату, положить ее в переменную, обратиться к таблице в базе данных, и из нее в взять данные соответствующие этой дате. Проблема в том что при запросе "в ручную" указав дату скрипт работает, а если дата взята из переменной то нет.

Вот так скрипт работает:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $my_date = $_POST['my_date'];
  4.  
  5. function bl1 () {
  6. $connection = mysql_connect ("localhost", "root", "");
  7. $db = mysql_select_db ("test");
  8. $result = mysql_query (" SELECT mark FROM prov WHERE date = '07.03.17' AND block_num = '1' ");
  9.  
  10. $row = mysql_fetch_array($result);
  11. $my_color = $row["mark"];
  12.  
  13. if ($my_color == 55):
  14.     echo "green";
  15. elseif ($my_color == 70):
  16.     echo "blue";  
  17. elseif ($my_color == 60):
  18.     echo "red";  
  19. else:
  20.     echo "Нихера!";
  21. endif;
  22.  
  23. }
  24. bl1();
  25. ?>


А вот так нет
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $my_date = $_POST['my_date'];
  4.  
  5. function bl1 () {
  6. $connection = mysql_connect ("localhost", "root", "");
  7. $db = mysql_select_db ("test");
  8. $result = mysql_query (" SELECT mark FROM prov WHERE date = '$my_date' AND block_num = '1' ");
  9.  
  10. $row = mysql_fetch_array($result);
  11. $my_color = $row["mark"];
  12.  
  13. if ($my_color == 55):
  14.     echo "green";
  15. elseif ($my_color == 70):
  16.     echo "blue";  
  17. elseif ($my_color == 60):
  18.     echo "red";  
  19. else:
  20.     echo "Нихера!";
  21. endif;
  22.  
  23. }
  24. bl1();
  25. ?>


Во втором варианте в запросе в коде указанна переменная которая взята из формы. При попытке вывести эту переменную на экран она работает нормально, то есть выводится корректно.

При попыте поставить вот этот код в кавычках (хотя в первом варианте работает и без)
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query (" SELECT mark FROM prov WHERE date = '07.03.17' AND block_num = '1' ");
  2.  

Начинает ругать и вот что выводит
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\OpenServer\OpenServer\domains\localhost\form\new.php on line 11


Заранее спасибо!
(Добавление)
Все разобрался)
2. haveFun - 07 Марта, 2017 - 17:21:05 - перейти к сообщению
$result = mysql_query ('SELECT mark FROM prov WHERE date = "' . $my_date . '" AND block_num = 1');
а вообще даты хранятся в бд в формате 2017-03-07
$date = (new DateTime('07.03.17'))->format('Y-m-d');
$date = (new DateTime($my_date))->format('Y-m-d');
3. n0nsence - 07 Марта, 2017 - 17:42:52 - перейти к сообщению
haveFun пишет:
$result = mysql_query ('SELECT mark FROM prov WHERE date = "' . $my_date . '" AND block_num = 1');
а вообще даты хранятся в бд в формате 2017-03-07
$date = (new DateTime('07.03.17'))->format('Y-m-d');
$date = (new DateTime($my_date))->format('Y-m-d');


Нет. даты хранятся в формате 03.07.17 (в том плане что поле с датами у меня варчар)

Беда была в том что переменная $my_date бралась из масива а функция bl1 () не хотела ее воспринимать. Когда я перенес забор переменной в функцию то все стало норм работать)
4. haveFun - 07 Марта, 2017 - 17:47:48 - перейти к сообщению
используйте правильные типы полей для хранения данных
5. n0nsence - 07 Марта, 2017 - 17:51:07 - перейти к сообщению
haveFun пишет:
используйте правильные типы полей для хранения данных


ну как бы
дает мне формат 03.07.17 и кладет их в базу. что есть тем и пользуюсь))

 

Powered by ExBB FM 1.0 RC1