PHP / MySQL问题

时间:2014-04-13 11:45:46

标签: php mysql

我正在尝试建立一个可以安排到类别(衬砌,击剑和装饰,砖砌)的图像数据库,虽然我遇到了一些麻烦但似乎无法解开,如果有人可以帮助那个会很棒,我的桌子由3列组成; id,Img,category

编辑:忘记提及我正在尝试使用下拉菜单实现这一点,在页面加载时它应该显示所有结果,然后可以过滤到类别..奇怪的是它显示所有图像如果'类别'设置到'1',但如果你把它们设置为'衬里'或'击剑&装饰'它不起作用。不确定出了什么问题?

    <?php

define('DB_NAME', 'wlarter_portfolio');
define('DB_USER', 'wlarter_user');
define('DB_PASSWORD', 'pw');
define('DB_HOST', 'localhost');

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link) {
    die('Could not connect: ' . mysql_error());
}

$db_selected = mysql_select_db(DB_NAME, $link);

if (!$db_selected) {
    die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}

$qry = "SELECT * FROM image ";
if(isset($_GET['category']) && is_numeric($_GET['category'])){
   $qry .=  "where category = ".$_GET['category'];
}
$results= mysql_query($qry) or  die(mysql_error());

?>


<?php
while ($row = mysql_fetch_assoc($results)) { ?>

<div class="box-portfolio"> <?php echo $row['Img']; ?> </div>

<?php 
}; 
?>

<?php
   $category = isset($_GET['category']) && is_numeric($_GET['category']) ? $_GET['category'] : 1; // where 1 is a default category to show!
?>
<select onchange="if(this.value != '') document.location = '/portfolio.php?category=<?php echo $category; ?>&order_by=' + this.value">
  <option value="">Choose an option</option>
  <option value="Fencing & Decking"<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'Fencing & Decking') echo ' selected="selected"'; ?>>Fencing & Decking</option>
  <option value="Lining"<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'Lining') echo ' selected="selected"'; ?>>Lining</option>
</select>

1 个答案:

答案 0 :(得分:0)

这很简单。您检查 category GET参数是否为is_numeric($_GET['category'])的数字,因此它可以将 category 设置为数字(1),但在设置时不起作用它是一个字符串(“衬里”,“围栏”等)。

在使用var_dump($qry)执行查询之前,尝试使用mysql_query打印查询。您将看到查询的外观。