[英]Multiple input field search in PHP and MySQL not working
我必須在一個搜索中輸入多個輸入(成對輸入):例如:
1 Vorname and Strasse
2 Nachname and Strasse
3 Vorname and Email
4 Nachname and Email
5 Only Vorname
6 Only nickname
7 Only email
8 Vorname, Nachname, and Strasse
9 Vorname, Nachname, and Email
10 like that all separately and together
我在下面的代碼中執行了此操作,但對於上述條件不起作用。 有人在這里幫助我使用PHP / MySQL。 真的很感激
PHP代碼:
if(isset($_POST['submit']) ){
if(isset($_POST['text1'], $_POST['text7'])){
// we got both vorname and ort
$statement= $myconnection->prepare(
"SELECT * FROM OL_trans WHERE vorname = ? AND ort = ? OR nachname = ? OR strasse = ? OR email = ?");
$statement->execute( [$_POST['text1'], $_POST['text7'], $_POST['text2'],$_POST['text8'], $_POST['text3']] );
}
else{
if(isset($_POST['text1'])){
// vorname
$statement= $myconnection->prepare(
"SELECT * FROM OL_trans WHERE vorname = ?");
$statement->execute( [$_POST['text1']] );
}
if ( isset($_POST['text7'] )) {
// ort
$statement= $myconnection->prepare(
"SELECT * FROM OL_trans WHERE ort = ?");
$statement->execute( [$_POST['text7']] );
}
}
// generate the output
$rows = $statement->fetchAll();
foreach($rows as $row){
echo '<br/>'.$row['vorname'].
' - '.$row['nachname'].
' - '.$row['strasse'].
' - '.$row['plz'].
' - '.$row['ort'].
' - '.$row['email'].
' - '.$row['telefon'].
' - '.$row['mobil'].'<br/><br/>';
}
}
HTML代碼:
<form method="post" action="sample.php">
<br><br>
<br><br>
<!--Beginn des Anrede-->
<div class="form1"><br><br>
<div class="names">
<div class="anrede">
<label for="Anrede">Anrede
<select id="select" name="anrede" >
<option value="">--Please choose an option--</option>
<option value="herr">Herr</option>
<option value="frau">Frau</option>
<option value="andere">Andere</option>
</select>
</label></div>
<br><br>
<div><br>
<label class="desc" id="title1" for="text1">Vorname</label>
<div>
<input id="text1" name="text1" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="vorname">
</div>
</div>
<div><br><br>
<label class="desc" id="title1" for="text2">Nachname</label>
<div>
<input id="text2" name="text2" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="Ihr Nachname">
</div>
</div>
<div><br>
<label class="desc" id="title1" for="text3">E-mail-Addresse</label>
<div>
<input id="text3" name="text3" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="Deine Email">
</div>
</div>
<div><br>
<label class="desc" id="title1" for="text4">Telefonnummer</label>
<div>
<input id="text4" name="text4" type="number" class="field text fn" value="" size="8" tabindex="1" placeholder="Deine Telefonnummer">
</div>
</div>
<div><br><br>
<label class="desc" id="title3" for="text5">
Geburtstag
</label>
<div>
<input id="text5" name="text5" type="date" spellcheck="false" value="" maxlength="255" tabindex="3">
</div>
</div>
<div><br><br>
<label class="desc" id="title3" for="text6">
Plz
</label>
<div>
<input id="text6" name="text6" type="number" spellcheck="false" value="" maxlength="255" tabindex="3" placeholder="Ihre Postleitzahl">
</div><br><br>
<label class="desc" id="title3" for="text7">
Ort
</label>
<div>
<input id="text7" name="text7" type="text" spellcheck="false" value="" maxlength="255" tabindex="3" placeholder="Dein Platz">
</div><br><br>
</div>
<div>
<label class="desc" id="title1" for="text8">Straße</label>
<div>
<input id="text8" name="text8" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="Deine Straße">
</div>
</div>
<div><br><br>
<label class="desc" id="title3" for="text9">
Hausnummer
</label>
<input id="text9" name="text9" type="number" spellcheck="false" value="" maxlength="255" tabindex="3" placeholder="Ihre Hausnummer">
<label class="desc" id="title3" for="text9">
Hausnummerzusatz
</label>
<input id="text10" name="text10" type="number" spellcheck="false" value="" maxlength="255" tabindex="3" placeholder="Zusätzliche Adresse">
<div><br><br>
<div class="sub">
<input type="submit" name="submit" value="Suche">
<input type="reset" name="reset" value="Reset">
</div>
<br><br><br></div>
</div>
</div>
</form>
配對搜索均無效。 我嘗試在“與”和“或”之間進行切換,但對我不起作用。
首先,給您的表單字段起一個合理的名稱,這樣您就可以知道當字段使用PHP時要處理的內容。 例如,至少我們正在腳本中處理的那些:
是text1:
<input id="vorname" name="vorname" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="vorname">
是text7
<input id="ort" name="ort" type="text" spellcheck="false" value="" maxlength="255" tabindex="3" placeholder="Dein Platz">
是text2
<input id="nachname" name="nachname" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="Ihr Nachname">
是text8
<input id="strasse" name="strasse" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="Deine Straße">
是text3
<input id="email" name="email" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="Deine Email">
的PHP
// while developing and debugging add these
// just in case you are developing on a PHP configured for a LIVE env
ini_set('display_errors', 1);
ini_set('log_errors',1);
error_reporting(E_ALL);
// this should really go in the db connect section
// will cause PDO to throw exceptions if errors happen in the PDO Code
// so you can actually see what the problems are
$myconnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if(isset($_POST['submit']) ){
$sql = 'SELECT * FROM OL_trans WHERE ';
if ( !empty($_POST['vorname']) ) {
$sql .= ' vorname = ? AND ';
$params[] = $_POST['vorname'];
}
if ( !empty($_POST['nachname']) ) {
$sql .= ' nachname = ? AND ';
$params[] = $_POST['nachname'];
}
if ( !empty($_POST['email']) ) {
$sql .= ' email = ? AND ';
$params[] = $_POST['email'];
}
if ( !empty($_POST['strasse']) ) {
$sql .= ' strasse = ? AND ';
$params[] = $_POST['strasse'];
}
if ( !empty($_POST['ort']) ) {
$sql .= ' ort= ? AND ';
$params[] = $_POST['ort'];
}
// remove trailing AND
$sql = rtrim($sql, 'AND ');
$stmt = $myconnection->prepare($sql);
$stmt->execute($params);
$rows = $stmt->fetchAll();
foreach($rows as $row){
echo '<br/>'.$row['vorname'].
' - '.$row['nachname'].
' - '.$row['strasse'].
' - '.$row['plz'].
' - '.$row['ort'].
' - '.$row['email'].
' - '.$row['telefon'].
' - '.$row['mobil'].'<br/><br/>';
}
}
編輯:RE問題
當我進入時,我正在運行一點測試床
$_POST = [ 'submit' => 1,
'vorname' => 'Thomas',
'nachname' => 'Denly',
'email' => 'xxxx@edfsd.com'
];
生成的查詢是
SELECT * FROM OL_trans WHERE vorname = ? AND nachname = ? AND email = ?
$params
數組是
Array
(
[0] => Thomas
[1] => Denly
[2] => xxxx@edfsd.com
)
如果我輸入
$_POST = [ 'submit' => 1,
'vorname' => 'Thomas',
];
查詢是
SELECT * FROM OL_trans WHERE vorname = ?
和參數是
Array
(
[0] => Thomas
)
那么該查詢和參數值有什么問題?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.