Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php where子句中的多列查询mysql_Php_Mysql_Where Clause_Multiple Columns - Fatal编程技术网

Php where子句中的多列查询mysql

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)) {

以下代码是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中将变量解释为其值,则不能使用单引号

$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); 

?>