[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Создаю функцию-не работает
Krevedko
В теле программы значит
PHP
<?php 
        
if (isset($_REQUEST['search'])) 
    {
$search $_REQUEST['search'];
     
searchres($search);} 
        else
    {echo 
"Добро пожаловать на MP3 PORTAL";}

Сама функция
PHP
function searchres($search)
{
    
$sql "SELECT * FROM res WHERE name = '$search'";
    
$result1 mysql_query ($sql$db);  
    if(!
$result1
    {
              echo 
"Возникла ошибка - ".mysql_error()."<br>"
      echo 
$sql;
         exit();
            }
    while (
$row mysql_fetch_assoc ($result1))
    {echo 
'<a href="alp.php&sp='.$row['id'].'">'.$row['name'].'</a> ';}
}

Так выдает ошибку.
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in Y:\home\10.16.1.10\www\mp3portal\index.php on line 17
Возникла ошибка -
При запросе SELECT * FROM res WHERE name = 'nightwish'
Если копирую все, что есть в функции и вставляю напрямую, то все работает.
Но я не хочу захламлять сильно хтмл-код...
Хочу, чтобы все функции были в одном месте.
В чем проблема ?



Спустя 9 минут, 57 секунд (2.07.2009 - 22:03) sergeiss написал(а):
Это что - тоже "поповский" код? smile.gif

У тебя переменная $db не определена внутри функции. Если она глобальная, то так и напиши
PHP
global $db;
Либо - передай ее в виде параметра.


И код можно компанктнее написать:
Вместо
PHP
$result1 = mysql_query ($sql, $db);  
    if
(!$result1) 
    
{
              echo "Возникла ошибка - ".mysql_error()."<br>"; 
      echo $sql
;
         exit();
            }


Вот так вот (это к вопросу о стиле программирования, из соседней темы):
PHP
$result1 = mysql_query ($sql, $db) or die( "Возникла ошибка - ".mysql_error()."<br>".$sql);


Плюс к этому, у тебя переданный параметр используется напрямую в запросе. А это - широкие ворота для SQL-инъекции.

Спустя 7 минут (2.07.2009 - 22:10) Krevedko написал(а):
Нет . Это мой код sad.gif

Эхх..совсем забыл про объявление глобальных переменных, дурья моя башка )))
Спасибо !
Не привык еще к пхп, что тут надо объявлять, хотя в книжке читал про это. Вылетело из головы

Спустя 2 минуты, 3 секунды (2.07.2009 - 22:12) Krevedko написал(а):
урррааа..работает.
теперь я усну хоть спокойно

ПыСЫ Что такое инъекция ?
Вставка левой инфы в БД ? каким образом ?

Спустя 1 минута, 29 секунд (2.07.2009 - 22:13) sergeiss написал(а):
Да, и еще примечание. Если у тебя в каком-либо блоке только один оператор, как echo в твоем цикле, то его необязательно (хотя и можно) заключать в фигурные скобки.

И про защиту от инъекции не забудь! smile.gif После этого точно можешь "спать сном младенца" wink.gif

Спустя 8 минут, 27 секунд (2.07.2009 - 22:22) PandoraBox2007 написал(а):
Цитата (sergeiss @ 2.07.2009 - 19:13)
И про защиту от инъекции не забудь! smile.gif

PHP
htmlspecialchars();
творит чудеса и про инфекции можно забыть smile.gif или
PHP
mysql_real_escape_string();

Спустя 4 минуты, 20 секунд (2.07.2009 - 22:26) Krevedko написал(а):
расскажите про инъекцию ..люююди...не усну ведь ). ушел гуглить

Спустя 41 секунда (2.07.2009 - 22:27) PandoraBox2007 написал(а):

Спустя 4 минуты, 28 секунд (2.07.2009 - 22:31) PandoraBox2007 написал(а):
в твоем случае надо экранировать так
PHP
$search = mysql_real_escape_string($_REQUEST['search']);
иначе чревато хакер может выполнить поиск у тебя обойти кавычки и сделать запрос в Базу скопировать всю базу или записать Shell
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.