[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Переменные в функции
NierRa
function getContacts($id) {
$query = mysql_query("SELECT `name` FROM `table` WHERE `id` = ".$id);
}


Проблема: в запрос не поступает переменная. Если выполнить проверку следующего типа:

function getContacts($id) {
echo $id; /* Переменная определена и выводится */
$query = mysql_query("SELECT `name` FROM `table` WHERE `id` = ".$id);
}


Есть мысли?



Спустя 2 минуты, 54 секунды (27.07.2012 - 20:52) kovaldm написал(а):
А с чего ты решил что она не поступает?

Спустя 19 минут, 38 секунд (27.07.2012 - 21:12) NierRa написал(а):
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in {path} on line 12

Для проверки, написал запрос:

function getContacts($id) {
$query = mysql_query("SELECT `name` FROM `table` WHERE `id` = 1");
}


Все работает



Спустя 1 час, 33 минуты, 53 секунды (27.07.2012 - 22:45) Bezdna написал(а):

$query = mysql_query("SELECT `name` FROM `table` WHERE `id` = '".$id."'");

Спустя 8 минут, 52 секунды (27.07.2012 - 22:54) NierRa написал(а):
И так пробовал.
и даже по Поповски .

function getContacts($id) {
$query = mysql_query("SELECT `name` FROM `table` WHERE `id` = $id");
}


Не помогает

Спустя 19 минут, 1 секунда (27.07.2012 - 23:13) Bezdna написал(а):
Цитата (NierRa @ 27.07.2012 - 22:54)
Не помогает


function getContacts($id = '1')


Так тоже?

Спустя 3 минуты, 43 секунды (27.07.2012 - 23:17) NierRa написал(а):
Да, дефаултное значение тоже не воспринимается.
Чем это может быть обусловлено, что переменная определена и выводится, но в запрос не поступает?

Спустя 10 минут, 23 секунды (27.07.2012 - 23:27) Winston написал(а):
А где return?

Спустя 23 минуты, 5 секунд (27.07.2012 - 23:50) NierRa написал(а):
Я написал 1 строку из многострочной функции, чтобы показать суть. Смысл в том, что запрос в БД не видит входной параметр функции.
Если вкратце, далее идет вывод информации из БД в форму. Функция не возвращает результат, так как мне не нужно далее с этими данными работать.
Если нужно я линкану весь код

Спустя 7 минут, 13 секунд (27.07.2012 - 23:58) Winston написал(а):
$query = mysql_query("SELECT `name` FROM `table` WHERE `id` = $id") or die(mysql_error());

Спустя 9 минут, 22 секунды (28.07.2012 - 00:07) NierRa написал(а):
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 '' at line 4

3. /* Функция вывода информации из БД (Контакты) */
4. function getContacts($point) {
5. echo $point; /* Тест переменной - temp */


Спустя 2 минуты (28.07.2012 - 00:09) Guest написал(а):
$query = mysql_query("SELECT `name` FROM `table` WHERE `id` = '$id'") or die(mysql_error());

Спустя 4 минуты, 57 секунд (28.07.2012 - 00:14) NierRa написал(а):
Благодарю, запрос такого вида оказался корректен.
Я всегда думал, что переменные, обрамленные апострофами конвертируются в текст. Хотя может это не актуально для SQL запросов

Спустя 13 минут, 35 секунд (28.07.2012 - 00:28) NierRa написал(а):
Спрошу в догонку...
Есть файл с незатейливым названием lib, в котором хранятся все пользовательские функции. Ну или почти все, не столько важно

В каждой функции идет обращение к БД, через конструкцию require. Разумеется это некошерно B)
Куда логичнее подключть БД в начале файла lib и просто передавать значение переменной.
Вот например...

<?php /* file lib.php */
require_once ROOT_SITE.'/modules/system/db.php';

function getContacts($id) {
$query = mysql_query("SELECT `name` FROM `table` WHERE `id` = '$id'", $auto);
}


Для того, чтобы функция работала корректно - нужно передать ей значение $auto. Допустим в этом примере мы по каким-либо причинам не можем установить для $auto дефолтное значение. (Предположим, что в проекте используется несколько различных подключений и мы точно не знаем какое нам необходимо в данный момент)

/* file default.php */

call_user_func('getContacts', $id);


Передать переменную $auto я здесь не могу, так как она определяется в другом файле. Как передать функции getContacts переменную, в которой находится результат соеденения с БД.


Спустя 4 часа, 13 секунд (28.07.2012 - 04:28) GET написал(а):
NierRa

Можно, например, объявить ее, переменную $auto, как константу. Константы видимы внутри функций. Или через переменную сессии.

Вообще, обычно mysql_query в таких случаях обертывают..и пользуются своей функцией, например,
query($sql,$auto);
, $sql - строка запроса, ;$auto - идентификатор подключения. Это делается для того, чтоб обнаружить ошибки подключения к БД.

Спустя 4 часа, 47 минут, 9 секунд (28.07.2012 - 09:15) inpost написал(а):
Вы о чём? Область видимости переменных читали?

Ругается на fetch_assoc, который находится за пределами функции. Winston выше это же и сказал...

Ну а лучше вообще покажи весь код и строчку с которой проблема!

Спустя 53 минуты, 20 секунд (28.07.2012 - 10:08) NierRa написал(а):
/* Функция вывода информации из БД (Контакты) */
function getContacts($point = 'default') {
require_once ROOT_SITE.'/modules/system/db.php';
$query = mysql_query("SELECT `title`, `adress`, `adress_img`, `phone`, `phone_img`, `email`, `email_img`, `map_img`
FROM `contacts`
WHERE `point` = '"
.htmlspecialchars($point)."'") or die('MYSQL_ERROR');

while ($res = mysql_fetch_assoc($query)) : ?>
<table class="contacts" width="560" border="0">
<
tr>
<
th colspan="2" align="left" scope="col"><?php
echo htmlspecialchars($res['title']); ?></th>
</
tr>
<
tr>
<
td width="30" align="center"><img src="./images/<?php
echo htmlspecialchars(
$res['adress_img']); ?>" width="20" height="18"></td>
<
td align="left"><?php
echo htmlspecialchars($res['adress']); ?></td>
</
tr>
<
tr>
<
td width="30" align="center"><img src="./images/<?php
echo htmlspecialchars(
$res['phone_img']); ?>" width="20" height="18"></td>
<
td align="left"><?php
echo htmlspecialchars($res['phone']); ?></td>
</
tr>
<
tr>
<
td width="30" align="center"><img src="./images/<?php
echo htmlspecialchars(
$res['email_img']); ?>" width="20" height="18"></td>
<
td align="left"><?php
echo htmlspecialchars($res['email']); ?></td>
</
tr>
</
table>

<
div class="googleMap"><img src="./images/<?php
echo htmlspecialchars(
$res['map_img']); ?>"></div>

<?php endwhile;

} /* endFunction */ ?>

Спустя 6 часов, 40 минут, 55 секунд (28.07.2012 - 16:49) inpost написал(а):
Показать ошибку. Показать строчку, в какой именно ошибка. Я же не знаю, что за строчки 55555 в данном коде. Укажи их, чтобы я понимал о чём речь.


_____________
Задача на корректную обработку данных (мое решение)
http://eu.battle.net/sc2/ru/profile/2212951/1/IIIIIIIIIIII/
Быстрый ответ:

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