PHP-запрос не работает - PullRequest
1 голос
/ 13 июня 2011

У меня есть проблема, которая смотрит мне в лицо, но я не могу ее решить.

Первое из:

1) код анализируется перед проверкой на внедрение SQL.
2) $ dbc - это ссылка, которая является частью другого скрипта, для которого вызывается функция require_once () и который отлично работает для двух других скриптов в зависимости от него
3) текст запроса при закачке прямо в mysql перезванивает точно, что я после
4) Если я добавлю ложный массив в $ displayBlogs, остальная часть скрипта будет работать как надо.

Таблица заполнена. Так почему же я не получаю ни результатов, ни ошибок (проверено с помощью mysqli_error ($ dbc))? Блоги просто кажутся пустыми.

function getSnippets()
{
  // set up the query   
  $query1 = "SELECT * FROM blogs LIMIT 0, 10";

  // action the query and save the connection
  $blogs = mysqli_query($dbc, $query1);

  // blank out the variable that will be used to save the query results
  $displayBlogs = '';

  // iterate through the query results and set up the module return
  while($blog = mysqli_fetch_array($blogs))
  {
    $displayBlogs .= "<div class='article'><a href='" . $blog['link'] ."'>" .
                     "<h1>" . $blog['title'] . "</h1>" .
                     "<h2>" . $blog['date'] . "</h2>" .
                     "<p>" . $blog['body'] . "</p>" .
                     "</a></div>";
  }      
  return $displayBlogs;
}

Ответы [ 4 ]

3 голосов
/ 13 июня 2011

Вы можете объявить глобальную область видимости для $ dbc:

function getSnippets()
{
    global $dbc;
    // declaring $dbc global to have it accessed outside the scope of the function
}

или, даже лучше , передать ее в качестве аргумента функции, поскольку использование глобальных переменных считается плохая практика (проверьте, среди многих, этот ТАК вопрос о том, почему):

function getSnippets($dbc)
{
   $connection = $dbc;
   //...
   $blogs = mysqli_query($connection, $query1);

  // rest of code...
}
1 голос
/ 13 июня 2011

Даже если это необходимо, переменная $dbc не должна быть доступна изнутри функции.Чтобы сделать это возможным, используйте его как глобальный .

. В этом случае будет написано, в начале вы должны написать:

function getSnippets()
{
    global $dbc;
0 голосов
/ 13 июня 2011

Вы должны использовать var_dump () для каждой из используемых переменных, пока не поймаете виновника.

$dbc
$query1
$blogs
$blog

Кроме того, вы должны следить за своими журналами mysql, чтобы увидеть, что на самом деле происходит.в конце базы данных.

Я не решаю вашу проблему, я понимаю (почти уверен, что Скотт понял это), но, надеюсь, приведет вас к выявлению и выявлению подобных ошибок в будущем (вы их сделаете).

0 голосов
/ 13 июня 2011

Вам нужно global $dbc;?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...