2011-06-12 154 views
1

我有一個問題,就是盯着我的臉,但我似乎無法解決它。PHP查詢不起作用

首先:

1)的代碼被以檢查SQL注入之前進行解析。
2)$ dbc是另一個腳本的一部分,它是被調用的「require_once()」的一部分,並且完美地工作於其他兩個腳本,取決於它的好處
3)查詢文本直接抽入mysql 4)如果我把一個false數組放入$ 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; 
} 

回答

3

你可以聲明爲$ DBC全球範圍內:

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

,或者甚至更好,把它作爲函數的參數,如使用全局變量被認爲是實踐(支票,當中很多,this SO問題爲什麼):

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

    // rest of code... 
} 
+0

這就是它!我只是將該變量傳遞給函數,並且嘿preseto! – 2011-06-13 05:44:33

0

你需要global $dbc;

1

儘管它是必需的,但$dbc變量不應該從函數內部被訪問。爲了使它可行,use it as a global

在這種情況下,它會被寫入,在開始時,你應該寫:

function getSnippets() 
{ 
    global $dbc; 
0

您應該使用的var_dump()上的每個使用,直到你釘的罪魁禍首的變量。

$dbc 
$query1 
$blogs 
$blog 

此外,你應該監視你的mysql日誌,看看在數據庫端實際發生了什麼,如果有的話。

沒有解決你的問題我意識到(很確定斯科特得到了這個),但希望能帶領你隔離和識別將來的類似錯誤(你會讓他們)。