Naja, ich kann bspw. ja nur auf die Brackets der while verzichten, wenn nur die unmittelbar folgende Anweisung ausgeführt werden soll.
Das ist bei Dir der var_dump(); Das Zusammensetzen der Row passiert demnach in der von Dir gezeigten Code-Version erst nachdem die Iteration beendet ist.
Ist schon mal das erste, was mir adhoc auffällt.
EDIT:
Habe mal eine Test-Datenbank angelegt:
Vorname | Nachname | Wohnort |
Hans-Peter | Hansen | Hansestadt |
Freddy | Kaputtlick | Bröseldorf |
Hugo | Hänger | Plattdorf |
Anka | Ra | Morgenland |
Darauf aufbauend erstelle ich nachher oder morgen mal ein Beispiel, basierend auf meinem Code, um die Funktionalität zu der verdeutlichen.
Link und Original-Code poste ich dann hier...
Hier der Link: http://examples.php-rocks.de/frmtest/
Und hier der relevante, aber wenig überraschende Code:
PHP
<?php
$sTableResult = '';
$bHasData = isset( $_POST['frmData']['search'] ) && !empty( array_filter($_POST['frmData']['search'], 'trim') );
if ( $bHasData ) {
$aData = filter_var_array( array_filter($_POST['frmData']['search'], 'trim'), FILTER_SANITIZE_STRING );
$aData = array_map( function($data) { return '%' . $data . '%'; }, $aData );
$aOptions = [
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];
include_once 'pdo-connect.php';
$sQuery = 'select column1, column2, column3 from AffenFormularTest where ';
$aClauses = array_map(
function( $key ) {
return $key . ' like :' . $key;
}
, array_keys( $aData )
);
$oStmnt = $oPDO->prepare( $sQuery . implode(' and ', $aClauses) );
$oStmnt->execute( $aData );
$aTableRows = [];
while ( $row = $oStmnt->fetch())
$aTableRows[] = '<tr><td>' . $row->column1 . '</td><td>' . $row->column2 . '</td><td>' . $row->column3 . '</td></tr>';
$sTableResult = '<div class="out-table"><table><thead><tr><td>Vorname</td> <td>Nachname</td><td>Wohnort</td></tr></thead><tbody>' . implode($aTableRows) . '</tbody></table></div>';
}
?>
<form name="frmSearchBooks" method="post">
<fieldset>
<div>
<input id="firstname" type="text" name="frmData[search][column1]" placeholder="Vorname">
</div>
<div>
<input id="lastname" type="text" name="frmData[search][column2]" placeholder="Nachname">
</div>
<div>
<input id="city" type="text" name="frmData[search][column3]" placeholder="Wohnort">
</div>
</fieldset>
<fieldset>
<button type="submit">SEARCH</button>
</fieldset>
</form>
<?php echo $sTableResult; ?>
Alles anzeigen