我是php的新手,我搜索了谷歌,其他论坛,这个网站并查看了几本书,但看不出怎么做。请不要因我的无知而鞭挞我。我想根据另一个字段(代码)中的条件从字段(类别)中选择不同的条目,然后显示包含不同类别的下拉列表。名为“code”的字段包含三个数据值中的一个,即1,2或4.我只想在代码字段为“2”或“4”时选择不同的类别,但如果包含值为' 1' 。
我已经尝试了几种方法,但我只是得到一个确认数据库连接使用它下面没有内容的下拉框。
经过多次试验,我目前的代码是:
if ( ! $_POST['submit'] )
{
// form not submitted, so display form to get input from user
echo '<form method="post" id="form_id" action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '">';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=gosdirect", $username, $password);
$code2 = '2';
$code4 = '4';
$sql = $dbh->prepare("SELECT DISTINCT category FROM directory WHERE code =$code2 OR code =$ode4 ORDER BY category ASC");
$sql->execute();
// display message if connection is OK
echo ' Connected to database<br />';
echo 'I am looking for local: <select name="category">';
while ($row = $sql->fetch(PDO::FETCH_ASSOC))
{
$category = $row['category'];
echo '<option value="' . $category . '">' . $category . '</option>';
}
echo '</select>';
// close the database connection
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
echo '<input id="form_submit" type="submit" name="submit" value="search" /></form>';
?>
如果我只使用这行:
$sql = $dbh->prepare("SELECT DISTINCT category FROM directory ORDER BY category ASC");
我确实得到了填充了类别名称的下拉框,但是它还包含“代码”字段中值为“1”的类别,我不希望这样,所以我假设有一些东西我的'SELECT请求基本上是错误的。
以下是我得到的图片:
screen shot http://www.wigweb.biz/gosport-error.jpg
我将不胜感激。
非常感谢
Tog Porter
答案 0 :(得分:3)
匹配包含2或4的代码,并排除其中包含1的代码
SELECT DISTINCT category
FROM directory
Where (code like '%2%' or code like '%4%') and not (code like '%1%')
ORDER BY category ASC
另外,如果你想在sql中使用一个varchar
字段的变量,用'$code2'
答案 1 :(得分:1)
您在这里输入错误:code =$ode4
,它应该是code = $code4
并且不要忘记在'
周围$code2
附近包含引号($code4
) 1}}因为code
字段是varchar
$sql = $dbh->prepare("SELECT DISTINCT category FROM directory WHERE code = '$code2' OR code = '$code4' ORDER BY category ASC");
答案 2 :(得分:0)
尝试以下代码:
$sql = $dbh->prepare("SELECT DISTINCT category FROM directory WHERE code != 1 ORDER BY category ASC");
希望这会奏效。日Thnx