PHP MYSQL选择邮政编码或customerid或任何内容

PHP MYSQL选择邮政编码或customerid或任何内容,php,mysql,select,Php,Mysql,Select,大家好,很抱歉我的英语太懒了^^!我想要一个SELECT for a searchform来搜索john doe的zipcode 1234示例。但是当我用1234搜索john doe时,结果是customerid为1234的客户。那不好,但我想,我走对了路。我怎样才能修好它?好的,这是我的初学者代码,我希望你们能笑一笑,你们能帮助我把这个代码编写成我想要的D非常感谢你们,伙计们 <table class="table table-striped" > <p>

大家好,很抱歉我的英语太懒了^^!我想要一个SELECT for a searchform来搜索john doe的zipcode 1234示例。但是当我用1234搜索john doe时,结果是customerid为1234的客户。那不好,但我想,我走对了路。我怎样才能修好它?好的,这是我的初学者代码,我希望你们能笑一笑,你们能帮助我把这个代码编写成我想要的D非常感谢你们,伙计们

<table class="table table-striped" > 
    <p>

        <tr>
            <th>Kundennummer</th>
            <th>Reklamationsnummer</th>
            <th>Firma</th>
            <th>Nachname</th>
            <th>Vorname</th>
            <th>Straße</th>
            <th>Nr</th>
            <th>Plz</th>
            <th>Ort</th>
            <th>Telefon</th>
            <th>Mail</th>
        <tr>





        <?php 
        error_reporting(-1);
        ini_set('display_errors', true);

        include "config.php";




        $kdnr = mysqli_real_escape_string($mysqli, $_GET['kdnr']);
        $reklamationsnummer = mysqli_real_escape_string($mysqli, $_GET['reklamationsnummer']);
        $firma = mysqli_real_escape_string($mysqli, $_GET['firma']);
        $nachname = mysqli_real_escape_string($mysqli, $_GET['nachname']);
        $vorname = mysqli_real_escape_string($mysqli, $_GET['vorname']);
        $street = mysqli_real_escape_string($mysqli, $_GET['street']);
        $hausnummer = mysqli_real_escape_string($mysqli, $_GET['hausnummer']);
        $postleitzahl = mysqli_real_escape_string($mysqli, $_GET['postleitzahl']);
        $ort = mysqli_real_escape_string($mysqli, $_GET['ort']);
        $telefon = mysqli_real_escape_string($mysqli, $_GET['telefon']);
        $mail = mysqli_real_escape_string($mysqli, $_GET['mail']);

        $result = $mysqli->query("SELECT kdnr, reklamationsnummer, firma, nachname, vorname, street, hausnummer, postleitzahl, ort, telefon , mail 
                                        FROM kundentest
                                        WHERE
                                        kdnr = '".$kdnr."' XOR
                                        reklamationsnummer = '".$reklamationsnummer."' XOR
                                        firma = '".$firma."' XOR
                                        nachname = '".$nachname."' XOR
                                        vorname = '".$vorname."' XOR
                                        street = '".$street."' XOR
                                        hausnummer = '".$hausnummer."' XOR
                                        postleitzahl = '".$postleitzahl."' XOR
                                        ort = '".$ort."' XOR
                                        telefon = '".$telefon."' XOR
                                        mail = '".$mail."' ");


        while ($row = $result->fetch_assoc()):
        ?>

        <tr>
            <td><?php echo $row['kdnr']; ?></td>
            <td><?php echo $row['reklamationsnummer']; ?></td>
            <td><?php echo $row['firma']; ?></td>
            <td><?php echo $row['nachname']; ?></td>
            <td><?php echo $row['vorname']; ?></td>
            <td><?php echo $row['street']; ?></td>
            <td><?php echo $row['hausnummer']; ?></td>
            <td><?php echo $row['postleitzahl']; ?></td>
            <td><?php echo $row['ort']; ?></td>
            <td><?php echo $row['telefon']; ?></td>
            <td><?php echo $row['mail']; ?></td>
        </tr>

        <?php
        endwhile;
        ?>

        </table>
        <table>
        <tr>
            <th><a class="btn btn-info" href="index.php" role="button">zurück zur Suche</a></th>
        </tr>
    </table>

我想我不理解您的疑虑,但是如果您创建一个存储过程来控制它,可能会更好。 如果有邮政编码为1234的客户,请返回,不要搜索customerid

或者

更改查询,以不查找customerid


关于英语也很抱歉=

我想您需要某种动态查询字符串生成。 尝试替换从include config.php开始的片段;致:


如果您有任何问题,欢迎垂询。

不要相信mysqli\u real\u escape\u字符串可以正确地转义您的输入!既然您的Colun不是英语,我们怎么知道哪一个是customerid列?你能翻译一下列名吗。。。。hahahahahahahaha@Mr.Llama,可信与否,使用real_escape会使代码更混乱,查询更难编写@devando,我郑重推荐使用PDO。命名占位符允许代码比?ones.kdnr-kunden numer-client numberNice试图通过一个数组,而不仅仅是一个巨大的字符串来解决这个问题。致命错误:在C:\xampp\htdocs\searchengine.php的第149行,即$stmt->bind_param's',$param{$i},只有变量可以通过引用传递;解析错误:语法错误,在C:\xampp\htdocs\searchengine.php的第146行出现意外的“$stmt”Tu变量解析错误:语法错误,在C:\xampp\htdocs\searchengine.php的第173行出现意外的“endwhile”Tu掼u掼u掼u掼u掼u掼u掼掼掼2553,亚历克斯?@devando frist:我的代码没有结尾:-第二:是的,PDO比imho好得多
include "config.php";
$query = "SELECT kdnr, reklamationsnummer, firma, nachname, vorname, street, hausnummer, postleitzahl, ort, telefon , mail 
          FROM kundentest ";
$search_fields = array('kdnr',
  'reklamationsnummer',
  'firma',
  'nachname',
  'vorname',
  'street',
  'hausnummer',
  'postleitzahl',
  'ort',
  'telefon',
  'mail'
);
$first = true;
$params = array();
foreach ($search_fields as $column) {
    if(isset($_GET[$column])) {
        if ($first) {
            $query.='WHERE ';
            $first = false;
        } else {
            $query.=' AND ';
        }
        $query.= $column.' = ? ';
        $params[]=$_GET[$column];
    }
}

if ($stmt = $mysqli->prepare($query)) {
    $i=0;
    foreach($params as $param) {
        ${'param'.++$i} = $param;
        $stmt->bind_param('s', ${'param'.$i});
    }

     $stmt->execute();

    /* bind result variables */

    $stmt->bind_result($kdnr, $reklamationsnummer, $firma, $nachname, $vorname, $street, $hausnummer, $postleitzahl, $ort, $telefon , $mail);

    while ($stmt->fetch()) { ?>
        <tr>
            <td><?= $kdnr ?></td>
            <td><?= $reklamationsnummer ?></td>
            <td><?= $firma ?></td>
            <td><?= $nachname ?></td>
            <td><?= $vorname ?></td>
            <td><?= $street ?></td>
            <td><?= $hausnummer ?></td>
            <td><?= $postleitzahl ?></td>
            <td><?= $ort ?></td>
            <td><?= $telefon ?></td>
            <td><?= $mail ?></td>
        </tr>
    <?php }
}