Я пытаюсь Acces своего переменного соединения в то время как я бег while
цикл, но когда я пытаюсь вызвать функцию, она поддельная на меня и PHP дает мне так называемое булево ошибку, когда я пытаюсь подготовить свое выступление в рамках функции.
Я отлаживал его до такой степени, что я знаю, что моя переменная $CategorieId
нажимается, и я получаю возвращаемый массив $con
при выполнении print_r
в самой функции. Однако, когда я пытаюсь получить его, когда я готовлю свое утверждение, он просто возвращает мне boolean
, создавая таким образом ошибку в раскрывающемся списке, не имея возможности ее заполнить.
Настройка выполняется следующим образом.
dbControl.php
$con = mysqli_connect('localhost','root','','jellysite') or die("Error " . mysqli_error($con));
function OpenConnection(){
global $con;
if (!$con){
die('Er kan geen verbinding met de server of met de database worden gemaakt!');
}
}
functionControl.php
function dropdownBlogtypeFilledin($con,$CategorieId){
echo "<select name='categorie' class='dropdown form-control'>";
$sql = "SELECT categorieId, categorieNaam
FROM categorie";
$stmt1 = mysqli_prepare($con, $sql);
mysqli_stmt_execute($stmt1);
mysqli_stmt_bind_result($stmt1,$categorieId,$categorieNaam);
while (mysqli_stmt_fetch($stmt1)){
echo "<option value='".$categorieId."'.";
if( $categorieId == $CategorieId){
echo "selected='selected'";
}
echo ">".$categorieNaam."</option>";
}
echo "</select>";
}
Blogedit.php
<?php
require_once '../db/dbControl.php';
require_once '../db/functionControl.php';
session_start();
OpenConnection();
$id = $_SESSION['user'];
?>
// some html up to the while loop
<?php
$a = $_GET['a'];
$sql = "SELECT blog.blogId,
blog.blogTitel,
blog.blogCategorieId,
blog.blogSynopsis,
blog.blogInhoud
FROM blog
WHERE blog.blogId = ? ";
$stmt1 = mysqli_prepare($con, $sql);
mysqli_stmt_bind_param($stmt1,'i',$a);
mysqli_stmt_execute($stmt1);
mysqli_stmt_bind_result($stmt1, $blogId, $Titel, $CategorieId, $Synopsis, $Inhoud );
while (mysqli_stmt_fetch($stmt1)){
$Synopsis = str_replace('\r\n','', $Synopsis);
$Inhoud = str_replace('\r\n','', $Inhoud);
?>
// again some HTML
<?php dropdownBlogtypeFilledIn($con,$CategorieId); ?>
// guess what, more html!
<?php
}
?>
Кто-нибудь знает, как я могу это решить? Я попробовал его с глобальной переменной (OpenConnection()
), но она, похоже, не работала.
редактировать
Я подтверждаю, что это действительно связано с переменной $ con. Я тестировал его, снова определяя переменную $ con в этой функции, и она отлично печатала то, что я хотел. Это плохие решения. Я просто предпочитаю, чтобы он определил один раз.
Странно то, что это происходит, только когда я помещаю его в цикл while. У меня есть форма создания, которая точно такая же, за исключением того, что цикл while отсутствует, так как я создаю все это с нуля, и в этой части нет PHP. У меня есть функция выпадающего списка, которая также требует переменную $con
, но там она работает. Я действительно думаю, что это связано с циклом while.
Я решил это на данный момент, создав новый экземпляр переменной соединения, прежде чем я запустил подготовленный оператор страницы для получения информации.
<?php
$connection = $con;
$a = $_GET['a'];
$sql = "SELECT blog.blogId,
blog.blogTitel,
blog.blogCategorieId,
blog.blogSynopsis,
blog.blogInhoud
FROM blog
WHERE blog.blogId = ? ";
mysqli_stmt_init($con);
$stmt1 = mysqli_prepare($con, $sql);
mysqli_stmt_bind_param($stmt1,'i',$a);
mysqli_stmt_execute($stmt1);
mysqli_stmt_bind_result($stmt1, $blogId, $Titel, $CategorieId, $Synopsis, $Inhoud );
mysqli_stmt_store_result($stmt1);
while (mysqli_stmt_fetch($stmt1)){
$Synopsis = str_replace('\r\n','', $Synopsis);
$Inhoud = str_replace('\r\n','', $Inhoud);
<?php dropdownBlogtypeFilledIn($connection ,$CategorieId); ?>
?>
С переменным $connection
я мог бы инициировать функцию, которая требовала детали соединения во время вызова. Я не уверен, есть ли здесь более чистый вариант, но я действительно где-то читал, что не могу использовать одну и ту же переменную соединения, если я уже использую ее в подготовленном заявлении. Я, видимо, не могу использовать эту одну и ту же переменную соединения, и это, казалось, проблема. Я посмотрю на это и надеюсь, что мне не нужно писать кучу переменных соединения, когда у меня есть несколько выпадающих меню, например, которые извлекают информацию из базы данных.