Всем еще раз привет, надоел наверное вам уже, но вот встретился с такой проблемой... есть переменная $posty["name"]; С помощью которой выводиться имя из базы данных. Но почему то она не подсавляется в следующую функцию в запрос к базе данных Код (Text): require_once ('db.php'); $p_id = $_GET["name_id"]; $sql = "SELECT * FROM `categores` WHERE id = " . $p_id; $result = mysqli_query($link, $sql) or die(mysqli_error($link)); $posty = mysqli_fetch_assoc($result); echo $posty["name"]; $name = $posty["name"]; /*ФК*/ function get_post () { $name = "head"; global $link; $sql = "SELECT * FROM `".$name."` ORDER BY `id` DESC"; $result = mysqli_query($link, $sql); $posts = mysqli_fetch_all($result, MYSQLI_ASSOC); return $posts; } $posts = get_post(); когда обращаюсь просто Код (Text): echo $posty["name"]; То выводит на экран слово " head" то что и должно быть... а когда делаю вот так Код (Text): $name = $posty["name"]; то он при запросе к БД выдает ошибку... воз сам запрос когда подставляю ее уже Код (Text): $sql = "SELECT * FROM `".$name."` ORDER BY `id` DESC"; Notice: Undefined variable: posty in C:\xampp\htdocs\tetst\head2.php on line 41 Warning: mysqli_fetch_all() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\tetst\head2.php on line 49 Почему он не передает нормальное значение из переменной полученной из БД, в обычную БД?
щас прочту --- Добавлено --- тойсть если сделать ее глобальной в функции то она заработает? А так он получаеться ее просто не видит? --- Добавлено --- От спасибо, один вопрос а так можно делать? Код (Text): global $link,$name; Но в принципе работает все, спасибо!
Объект-соединение с БД нормально держать в глобальной переменной, если не используешь ООП. Но а если охота поизвращаться с избавлением от глоб. видимости, копай в сторону статической локальной переменной. Я не до конца понимаю, как соотносится название ф-ции с ее содержимым. И не увидел внутри ф-ции проверку результата запроса.
PHP: \\ допустим, ошибка $result = mysqli_query($link, $sql); \\ ..здец без всяких «допустим» $posts = mysqli_fetch_all($result, MYSQLI_ASSOC); Ошибки при выполнении запросов могут появляться даже тогда, когда код с виду правильный, причем их появление будет не постоянным, поэтому их трудно отследить. Надеяться в данном вопросе на одно только глушение ошибок в продакшене неправильно.
PHP: /*...*/ $posty = mysqli_fetch_assoc($result); function get_post ($name) { global $link; $sql = "SELECT * FROM `".$name."` ORDER BY `id` DESC"; $result = mysqli_query($link, $sql); $posts = mysqli_fetch_all($result, MYSQLI_ASSOC); return $posts; } $posts = get_post($posty["name"]); /*...*/