2011-03-27 186 views
0

這是我想要做的;我將一個編碼數據作爲查詢變量傳遞給我的網頁,然後在我的php頁面中,解碼數據並在數據庫中檢查相同的數據。我使用的代碼如下所示:PHP從mysql數據庫中獲取查詢字符串變量的數據

<?php 
// Get the ID from URL. 
$id = (isset($_GET["id"]) && !empty($_GET["id"]) ? $_GET["id"] : ""); 

// If "id" is not empty, proceed. 
if(!empty($id)) { 
    $id = base64_decode($id); 
    global $wpdb; 
    $res = $wpdb->query("SELECT * FROM S_redirect WHERE source = ".$id); 
    $tot = count($res); 

    echo $tot . " records found."; 

    for($i=0; $i<count($res); $i++) { 
     echo $res[$i]->id; 
    } 
    exit; 
} 
else { 
    echo "No ID"; 
    exit; 
} 
?> 

我在我的數據庫中有一條記錄。上面的代碼正確地說「找到1條記錄」。我不確定如何獲得該行中的字段值。我有3列,他們是id,field1和field2。代碼「echo $res[$i]->id」不返回任何內容。

請幫

順便說一句,我在我的WordPress的博客嘗試這一點。

謝謝大家的建議。我試過你的建議,這裏是我的結果:

$res = $wpdb->query("SELECT * FROM S_redirect WHERE source = ".$id); 
$tot = count($res); 
echo $tot . " records found."."</br>"; 

它說找到1條記錄。

$res = $wpdb->get_row("SELECT * FROM S_redirect WHERE source = ".$id); 
$tot = count($res); 
echo $tot . " records found."."</br>"; 

它說找到0條記錄。

$res = $wpdb->get_results("SELECT * FROM S_redirect WHERE source = ".$id); 
$tot = count($res); 
echo $tot . " records found."."</br>"; 

它說找到0條記錄。

while ($row = mysql_fetch_array($res)) { 
echo $row[0]; 
} 

如果我使用mysql_fetch_array,

警告:mysql_fetch_array():提供的參數不是在/home/myfolder/mytheme/index.php一個有效的MySQL結果資源上線38

第38行是while($ row = mysql_fetch_array($ res)){。

我試圖做到:

我有一個WordPress博客。所有上面的代碼進入我的index.php。我會通過查詢字符串變量將產品ID傳遞給我的index.php。我在我的wordpress數據庫中創建了一個名爲S_redirect的新表。我將檢索查詢字符串變量id的值,並在我的數據庫表中檢查相同的值。如果記錄存在,則從該表格行中檢索其中一個列值(產品的url)並重定向到該產品url。如果記錄不存在,則重定向到主頁。希望這有助於大家瞭解我在做什麼。

+0

'的var_dump($水庫);' – zerkms 2011-03-27 12:43:17

+1

根據http://codex.wordpress.org/Function_Reference/wpdb_Class你最好'get_results'方法 – zerkms 2011-03-27 12:49:22

+0

好吧,我已經使用$ wpdb-> get_results嘗試。我找到0條記錄。 – joghn 2011-03-27 13:13:09

回答

-1

使用:

$tot = count(mysql_fetch_array($res)); 

$tot = mysql_num_rows($res); 

最好是

而($行= mysql_fetch_assoc($ RES)){ 回波$行[ '列名']; }

+0

如果我使用mysql_fetch_array,我收到錯誤說Warning:mysql_fetch_array():提供的參數不是有效的MySQL結果資源在... – joghn 2011-03-27 13:30:06

1

通過$wpdb判斷,看起來這是一個WordPress。希望這將有助於: http://codex.wordpress.org/Function_Reference/wpdb_Class


更新

不要使用count()獲得的行數;使用$wpdb->num_rows(沒有(),因爲它是一個屬性,而不是函數)。該count() function總是返回1對任何非空值,它不識別爲「可數」值(即,數組和某些對象),那麼很可能你的代碼將總是產生1

$tot = $wpdb->num_rows; 

= ====
如果您有get_results()而不是query()運行查詢,那麼你可以通過結果像這樣的循環:

foreach ($res as $row) { 
    echo $row->id; 
} 

最後,我想你的代碼最終會這樣看:

$res = $wpdb->get_results("SELECT * FROM S_redirect WHERE source = ".$id); 
$tot = $wpdb->num_rows; 

echo $tot . " records found."; 

foreach ($res as $row) { 
    echo $row->id; 
} 

聲明:這是未經測試的,因爲我從來沒有使用過WordPress。這正是我從上面鏈接的文檔中理解的。希望它至少能讓你走上正軌。

+0

我試過使用$ wpdb-> get_row。我找到0條記錄。 – joghn 2011-03-27 13:16:25

+0

@joghn查看我的更新。 – Wiseguy 2011-03-27 21:20:30