【发布时间】:2013-03-04 16:04:48
【问题描述】:
selectbox with multiple columns from mysql database
以下代码是来自zgr024的中奖代码
<?php
include '../config.php';
$sql = "SELECT * FROM megabase";
$resultaat = mysql_query($sql) or die (mysql_error());
$domains = array();
while ($row = mysql_fetch_array($resultaat))
{
if (!empty($row['domeinnaam1'])) $domains[] = $row['domeinnaam1'];
if (!empty($row['domeinnaam2'])) $domains[] = $row['domeinnaam2'];
}
?>
<select size="1" name="domeinnaam">
<?php
foreach ($domains as $domain)
{
echo "<option>$domain</option>";
}
?>
</select>
但是这段代码在我有以下代码的下一页上导致了一个预期的错误。
<?php
//MySQL Database Connect
include 'config.php';
$domeinnaam=$_POST['domeinnaam'];
$data = 'SELECT * FROM megabase WHERE domeinnaam = "'.$domeinnaam.'"';
$query = mysql_query($data) or die("Couldn't execute query. ". mysql_error());
$data2 = mysql_fetch_array($query);
?>
如何更改最后一个代码以使用第一个代码:
我试过了:
<?php
//MySQL Database Connect
include 'config.php';
$domeinnaam=$_POST['domeinnaam'];
$domeinnaamquerry='domeinnaam1'.'domeinnaam2'.'domeinnaam3'.'domeinnaam4'.'domeinnaam5'.'do meinnaam6'.'domeinnaam7'.'domeinnaam8'.'domeinnaam9'.'domeinnaam10';
$data = 'SELECT * FROM megabase WHERE $domeinnaamquerry = "'.$domeinnaam.'"';
$query = mysql_query($data) or die("Couldn't execute query. ". mysql_error());
$data2 = mysql_fetch_array($query);
?>
但我收到以下错误: 无法执行查询。 “where 子句”中的未知列“$domeinnaamquery”
Okey 现在可以正常工作了,但它很草率,但工作起来感谢大家的意见,这很有帮助。并感谢您的警告。
这里是代码
<?php
//MySQL Database Connect
include 'config.php';
$domeinnaam=$_POST['domeinnaam'];
$data = 'SELECT * FROM megabase WHERE domeinnaam1="'.$domeinnaam.'" OR domeinnaam2="'.$domeinnaam.'" OR domeinnaam3="'.$domeinnaam.'" OR domeinnaam4="'.$domeinnaam.'" OR domeinnaam5="'.$domeinnaam.'" OR domeinnaam6="'.$domeinnaam.'" OR domeinnaam7="'.$domeinnaam.'" OR domeinnaam8="'.$domeinnaam.'" OR domeinnaam9="'.$domeinnaam.'" OR domeinnaam10="'.$domeinnaam.'" ';
$query = mysql_query($data) or die("Couldn't execute query. ". mysql_error());
$data2 = mysql_fetch_array($query);
?>
【问题讨论】:
-
提示:阅读PHP strings和SQL injection。
-
这里有点不对劲。 1) 您对
$data使用了单个刻度,因此不会对$domeinnaamquerry进行插值。 2) 当您定义$domeinnaamquerry时,您已将所有列名粘合在一起,形成一个没有分隔符的巨大字符串。 3)即使你没有,你也不能使用一个 WHERE 子句来比较一个常量和多列和 4)SQL 注入。 -
我不想告诉你这个,但如果可以的话,你需要重新设计你的数据库。您需要创建一个新的 DomainNames 表并将 FK 设置为您的 megabase 表。您永远不应该在数据库中有 columnname1-columnname10。我知道您现在这样做是否为时已晚,但在未来,适当的数据库设计会解决您的大部分问题。
-
Mike C 感谢这不是我每天都做的事情。老实说,我只是发现它无法将更多域添加到记录中,我是 excel 思维而不是 mysql 思维。
-
他正在尝试获取在上一页中选择的选项的值...这些 cmets 与这个问题有什么关系?
标签: php mysql where-clause multiple-columns