Прежде всего дайте полям формы разумные имена, чтобы вы знали, с чем имеете дело, когда поля попадают в 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 Issues
У меня работает небольшой тестовый стенд, когда я ввожу
$_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
)
Так что же не так с этим запросом и параметромзначения?