Php where子句中的多列查询mysql
以下代码是zgr024的获奖代码Php where子句中的多列查询mysql,php,mysql,where-clause,multiple-columns,Php,Mysql,Where Clause,Multiple Columns,以下代码是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)) {
<?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中将变量解释为其值,则不能使用单引号
$foo = 'World';
echo 'Hello $foo'; // Hello $foo
echo "Hello $foo"; // Hello World
因此,你想要
$data = "SELECT * FROM megabase WHERE $domeinnaamquerry = '".$domeinnaam."'";
尽管阅读并理解为什么你真的不想要它。试试看
<?php
//MySQL Database Connect
include 'config.php';
$domeinnaam=$_POST['domeinnaam'];
$data = "SELECT * FROM megabase WHERE domeinnaam1 = '$domeinnaam' OR domeinnaam2 = '$domeinnaam' ";
$query = mysql_query($data) or die("Couldn't execute query. ". mysql_error());
$data2 = mysql_fetch_array($query);
?>
提示:阅读和。这里有一个很好的错误。1) 您对$data
使用了单勾号,因此$dominnaamquery
不会被插值。2) 定义$dominnaamquery
时,将所有列名粘在一起,形成一个没有分隔符的巨大字符串。3) 即使你没有这样做,你也不能用WHERE子句来比较一个常量和多个列以及SQL注入。我不想告诉你这一点,但如果可以的话,你需要重新设计数据库。您需要创建一个新的域名表,并为您的megabase表设置一个FK。数据库中不应该有columnname1-columnname10。我理解现在这样做是否太晚了,但在将来,正确的数据库设计将消除大部分问题。Mike C感谢这不是我每天都做的事情。老实说,我只是刚刚发现我不能在一个记录中添加更多的域,我是在考虑excel而不是mysql。他正在尝试获取他在上一页中选择的选项的值。。。这些评论和这个问题有什么关系?正如GigaWatt指出的,这里有一大堆问题;这只解决了其中的两个。Thnks Dancrumb,我现在得到以下错误。SQLInjection这不是供在线使用的,但感谢您提供的信息!我现在收到的错误是:无法执行查询。“where子句”中的未知列“DOMEINNAAM1DOMEINNAAM2DOMEINNAAM3DOMEINNAAM4DOMEINNAAM5DOMEINNAAM6DOMEINNAAM7DOMEINNAAM8DOMEINNAAM9DOMEINNAAMM10”他的问题是他试图在where子句中动态填充列名,而不是数据值。他正在尝试确定columnname1='bob'或columnname2='bob'或columnname3='bob'等的位置……是的,Mike C这正是我需要的。我刚刚发布了他正在寻找的答案,请确保您将剩余的列添加到其中,这应该满足您的需要。我只是在没有看到您的答案ZGR024的情况下这样做了,但非常感谢您,因为它是正确的代码。你又一次成功了。棒 极 了现在我转到第3页的错误,这是最后一页。这次我试着自己破解它。让我们看看我的大脑是否想做些工作。HahaI有一些奇怪的代码我不明白domeinnaam=“.”“$Key.””在哪里;如何在这里添加OR函数。我将为这一部分打开一个新问题第3部分第3部分:
$data = "SELECT * FROM megabase WHERE $domeinnaamquerry = '".$domeinnaam."'";
<?php
//MySQL Database Connect
include 'config.php';
$domeinnaam=$_POST['domeinnaam'];
$data = "SELECT * FROM megabase WHERE domeinnaam1 = '$domeinnaam' OR domeinnaam2 = '$domeinnaam' ";
$query = mysql_query($data) or die("Couldn't execute query. ". mysql_error());
$data2 = mysql_fetch_array($query);
?>