基于$ _GET结果执行MYSQL查询

时间:2012-12-11 22:51:42

标签: php mysql

当用户点击我的商品页面上的商品时,会使用$ _GET将商品品牌和模型传递给空白页面模板。

当用户点击以使用我的数据库中的产品详细信息填充空白页面时,我想执行另一个MYSQL查询。我想使用型号(唯一ID)检索单行,以使用信息填充页面。我尝试了几件事,但遇到了一些困难。

在我的空白项目页面上,我有

                $brand = $_GET['Brand'];
                $modelnumber = $_GET['ModelNumber'];

                $query = mysql_query("SELECT * FROM items WHERE `Model Number` = '$modelnumber'");
                $results = mysql_fetch_row($query);

                echo $results;

我认为围绕Model Model会造成麻烦,但没有它们,我会收到警告:mysql_fetch_row()期望参数1是资源,布尔给定错误。

我的数据库列看起来像

品牌|型号|价格|说明|图片

我尝试过的其他一些内容包括

$query = mysql_query("SELECT * FROM item WHERE Model Number = $_GET['ModelNumber']");

这给了我一个语法错误。我也尝试连接$ _GET,这给了我一个mysql_fetch_row()期望参数1是资源,布尔给定错误

这让我相信我也会错误地显示结果。我不确定是否需要将它放在where循环中,就像我在上一页显示数据库中的所有项目一样,因为这只是显示一个。

3 个答案:

答案 0 :(得分:1)

首先,请注意您的问题的第一条评论。你肯定想要添加某种卫生设施,至少是mysql_real_escape_string,尽管PDO或Mysqli会是首选。

其次,在得到您问题的真实答案之前,让我们获取有关您的错误的更多信息。

尝试以下方法:

$brand = mysql_real_escape_string($_GET['Brand']);
$modelnumber = mysql_real_escape_string($_GET['ModelNumber']);

$query = mysql_query("SELECT * FROM items WHERE `Model Number` = '$modelnumber'")OR die(mysql_error());
$results = mysql_fetch_row($query);

var_dump($results);

mysql_error告诉我们幕后发生了什么。

答案 1 :(得分:1)

似乎您的“结果”为单个变量提取了太多信息。 另外,我不认为你的表应该有空格的列名,我建议用破折号或下划线填充它们。

这是我的建议:

$qry = mysql_query("SELECT * FROM items WHERE Model_Number = '$modelnumber'"); //REMEMBER TO MAKE THE CHANGE "Model Number" -> "Model_Number"
while($row = mysql_fetch_array($qry)){
    $brand = $row['Brand'];
    $modelnumber = $row['Model_Number'];
    $price = $row['Price'];
    $description = $row['Description'];
    $image = $row['Image'];
}

这将使用表中的任何内容填充所有这些变量。

答案 2 :(得分:0)

如果您使用的是mysql_fetch_row,它将只返回与获取的行对应的数字字符串数组,如果没有更多行,则返回FALSE http://php.net/mysql_fetch_row

如果您需要检索该行内的数据。您需要使用mysql_fetch_array()

也尝试使用mysql_error();

 $results = mysql_fetch_row($query) or die(mysql_error());

您将看到代码产生的错误输出