2011-03-27 188 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