2010-10-01 8 views
1

У меня проблема с php. Следующий код генерирует ошибку «PHP Warning: mysqli_close() ожидает параметр 1, чтобы быть MySQLi, нуль дано [...]» на строке, содержащей mysqli_queryОбласть переменной в PHP

<html> 
<head> 
<?php 
    $table = "prjsuggestions"; 
    /$mysqli = NULL; 
    if(!empty($_POST['posttext'])){ 
     $pnameempty = empty($_POST['postname']); 
     $ynameempty = empty($_POST['name']); 
     if($pnameempty || $ynameempty){ 
     } 
     else{ 
      $mysqli = new mysqli("localhost", "progclub", "", "progclub"); 
      if(mysqli_connect_errno()){ 
       printf("Connect failed: %s\n", mysqli_connect_error()); 
       exit(); 
      } 
      //successful query normally occurs here but code fails w/ or /wo it. 
     } 
    } 
    else{ 
     printf("No information posted."); 
    } 
?> 
<title>Bucknell Programming Club</title> 
</head> 
<body> 
    <span id="posts"> 
<?php 
    $offset = 0; 
    $query = "SELECT * FROM {$table}"; 
    $result = mysqli_query($mysqli, $query); 
    if($result !== FALSE){ 
     //while(($post = mysqli_fetch_assoc($result)) !== NULL){ 
      echo mysqli_num_rows($result); 
      $post = mysqli_fetch_assoc($result); 
      $author = $post['name']; 
      printf("Author: %s\n", $author); 
      echo "<br />"; 
      printf("Post title: %s\n", $post['title']); 
      echo "<br />"; 
      printf("%s\n", $post['text']); 
      echo "<hr />"; 
     //} 
    } 
    else printf("oh nooo!"); 
    mysqli_free_result($result); 
    mysqli_close($mysqli); 
?> 
    </span> 
</body> 
</html> 

Обратите внимание, что все запросы были проверены и корректно работают в phpmy и что исходный код содержит более ранний запрос, который добавляет данные в базу, что также определенно работает.

Я пробовал различные комбинации статических и глобальных, и я подробно рассмотрел страницу PHP в области переменных, увы, я не совсем понимаю ее в этом контексте (например, учитывая мою неспособность заставить мой код работать) , Может ли кто-нибудь просветить меня в отношении разных областей? Я не думал, что должно быть!

+0

4 пробела перед строкой = форматирование кода. Выберите и коснитесь 'ctr-k', чтобы сделать это. –

+0

Ваша сфера выглядит нормально, но это невозможно сказать, поскольку вы предоставляете неверный и неполный PHP. Покажите некоторый код, который, по крайней мере, работает достаточно, чтобы произвести ошибку. –

+0

Я использую другую переменную и * они * все остаются в области просто отлично! Если это помогает фактической процедуре подключения внутри оператора if, но я чувствую, что это всего лишь призрак мысли C, который преследует мой анализ фактической проблемы. – conartist6

ответ

0

OOOOOOOOOOoooooooooooooooooohh. D'о. Да. Объем. Возможно, мне следовало бы больше узнать о том, что переменная инициализируется только при записи данных. К сожалению. Спасибо, парни.

3

Посмотрите на documentation (в частности, пример 1). Есть несколько примеров, похожих на ваши.

должна работать, и он похож на код:

Обратите внимание, как первый аргумент mysqli_query() является фактически переменной $mysqli. Вероятно, вы пытались поставить что-то еще.

Кроме того, убедитесь, что проверьте соединение, как в коде ниже:

<html> 
<head>  
<?php 
    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world"); 
?> 
</head> 
<body> 
<?php 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

/* Use $mysqli */ 
if (mysqli_query($mysqli, "/* ... MySQL goes here... */") === TRUE) { 
    /* Success! */ 
} 

mysqli_close($mysqli); 
?> 
</body> 
</html> 
Смежные вопросы