Jump to content
  • 0

sql запрос в функции


Winni
 Share

Question

Можно ли делать sql запрос внутри функции. Например:

 function left($n) 
{
echo "<div class=\"news\">";
$qvery = mysql_query("SELECT * FROM left_news WHERE id=$n ",$db);
$array = @mysql_fetch_array($qvery);
echo $array['id'];
echo $array['zag'];
echo $array['pic'];
echo $array['news'];
echo "<div class=\"n_zag\">$zag</div>";

$n++;
echo "</div>";
};

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

а почему у меня выскакивает это сообщение, хотя я функцию даже не запрашиваю

Warning: mysql_query() expects parameter 2 to be resource, null given in Z:\home\see\www\main.php on line 9

девятая линия:

 $qvery = mysql_query("SELECT * FROM  left_news WHERE id=$n ",$db);

Link to comment
Share on other sites

  • 0
Зачем мне делать её глобальной, $db это идентефикатор, я получил его в этом файле на пять строк выше.
Какая разница на сколько строк выше вы получили значение $db? Главное, что эта переменная определена вне функции.

И дальше вы сами ответили на свой вопрос, только мозгами надо немного поработать...

Если делать всё тоже вне функции, то всё работает.
Ну? Поняли?
Link to comment
Share on other sites

  • 0

И вообще, это лишнее, ИМХО. Будет работать и без $db. Маловероятно, что вы производите выборки из разных баз в рамках одного сайта. Ну а если используете, то тогда да.

Link to comment
Share on other sites

  • 0
так я и передаю ид базы параметром(а как иначе?)

А насчёт опустить, это лучший вариант, хы и столько проблем новичку из-за необязательного параметра.

Я имел ввиду это:

function left( $db, $n )
{
// ...
}

и вообще, если это метод класса, то его конструктору передается этот самый идентификатор соединения, который он сохраняет у себя

class MyClass
{
private $db;
function __construct( $db )
{
$this->db = $db;
}
}

А потом во всех методах его используем

// class MyClass
function left( $n )
{
$sql = "...";
mysql_query( $sql, $this->db );
// ...
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy