Привет, ребята (и извините за ленивый английский ^^)! Я хочу, чтобы SELECT для поиска искал (пример) с zipcode 1234 для john doe. но когда я ищу john doe с 1234, результатом будет клиент с 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>
Я думаю, вам нужно какое-то динамическое построение строки запроса. Попробуйте заменить начало фрагмента, include "config.php";
к:
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 } }
вы очень желанны, если возникнут какие-либо вопросы.
Я думаю, что я не понимаю ваших сомнений, но, может быть, лучше, если вы создадите хранимую процедуру для управления этим. Если у вас есть клиент с почтовым индексом, похожим на 1234, возвращайтесь и не загружайте для клиентов
или,
измените ваш запрос, чтобы не искать клиента.
Извините за английский тоже =)