Çalıştığım bir kod parçam var, ancak oldukça dağınık. Amaç, bir kullanıcı aramasından tüm ilgili satırları almaktır. Örneğin: Kullanıcı aramalar 'Jo', John ve Josh alır edin:Bu MySQLi/PHP kod segmentinde bakım yapılabilirlikle mücadele
çalışır kod: denedim ne
if($_SERVER["REQUEST_METHOD"] == "POST") {
$search = trim(filter_input(INPUT_POST,"user_search",FILTER_SANITIZE_SPECIAL_CHARS));
$search = preg_replace("#[^0-9a-z]#i", "", $search);
if(!isset($error_message)) {
$query = $db->query("SELECT * FROM User WHERE U_Forename LIKE '%$search%'
OR U_Surname LIKE '%$search%' OR U_Team LIKE '%$search'
OR U_City LIKE '%$search%'");
}
}
<?php
if ($query->num_rows == 0) {
$output = "No results found!";
} else {
echo "<h2>Search results for: " . $search . "</h2>";
while($row = $query->fetch_assoc()) {
$id = $row['U_ID'];
$firstname = $row['U_Forename'];
$lastname = $row['U_Surname'];
$team = $row['U_Team'];
$city = $row['U_City'];
echo "<div class='searchresults'>";
echo "<p> Name: " . ucfirst($firstname) . " " . ucfirst($lastname) . "</p>";
echo "<p> Favourite Team: " . ucfirst($team) . "</p>";
echo "<p> Location: " . ucfirst($city) . "</p>";
echo "<a class='lift' href='profile.php?=[$id]'>View Profile</a>";
echo "<a class='lift' href='#'>Follow Driver</a>";
echo "</div>";
}
}
?>
:
function getSearchResults($search) {
global $db;
$searchArray = array();
$query = $db->query("SELECT * FROM User WHERE U_Forename LIKE '%$search%'
OR U_Surname LIKE '%$search%' OR U_Team LIKE '%$search'
OR U_City LIKE '%$search%'");
if ($query->num_rows == 0) {
echo "No results found!";
} else {
while($row = $query->fetch_assoc()) {
$searchArray['U_ID'] = $row['U_ID'];
$searchArray['U_Forename'] = $row['U_Forename'];
$searchArray['U_Surname'] = $row['U_Surname'];
$searchArray['U_Team'] = $row['U_Team'];
$searchArray['U_City'] = $row['U_City'];
}
}
return $searchArray;
}
Ancak bu olmaz fetch_assoc() öğesinden yalnızca ilk sonuç olarak çalışmak $ searchArray öğesinde saklanır ve başka bir şey olmaz! Herhangi bir öneri var mı? Sonraki kodlamayı yapmaya başlamak için emin değilim.
James.
** UYARI **: Eğer parametreli sorguları kullanarak ve gerektiği mysqli' 'kullanırken [' bind_param'] (http://php.net/manual/en/mysqli -stmt.bind-param.php) sorgunuza kullanıcı verilerini eklemek için. ** Şiddetli [SQL enjeksiyon hataları] (http://bobby-tables.com/) yaratacağınız için bunu yapmak için manuel kaçış ve dizgi enterpolasyonu veya bitiştirme kullanmayın. Dizininizi temizlemeniz verilerinizi temiz tutabilir ancak SQL enjeksiyon sorunlarını her zaman engellemez, daha sonra enjekte edilen bir şeyi doğru bir şekilde temizlemeyi unutabilirsiniz. Yer tutucuların kullanılması hataları açık bir şekilde yapar. – tadman