PHP查询无法正常工作

时间:2011-06-12 22:12:41

标签: php mysqli

我有一个盯着我的问题,但我似乎无法解决它。

第一个:

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 个答案:

答案 0 :(得分:3)

您可以为$ dbc:

声明全局范围
function getSnippets()
{
    global $dbc;
    // declaring $dbc global to have it accessed outside the scope of the function
}

或者,甚至更好,将其作为函数的参数传递,因为使用全局变量被认为是错误实践(在许多情况下检查this所以问题为什么):

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

  // rest of code...
}

答案 1 :(得分:1)

即使它是必需的,也不应该从函数内部访问$dbc变量。为了使其成为可能,use it as a global

在这种情况下,它应该写在一开始,你应该写:

function getSnippets()
{
    global $dbc;

答案 2 :(得分:0)

您需要global $dbc;吗?

答案 3 :(得分:0)

你应该对每个使用的变量使用var_dump(),直到你指出罪魁祸首。

$dbc
$query1
$blogs
$blog

此外,您应该监视您的mysql日志,看看在数据库端实际发生了什么(

)。

没有解决你的问题我意识到(相当肯定斯科特得到了这个),但希望将来隔离并识别类似的错误(你将制作它们)。

相关问题