Я не знаю, как сделать в этом сценарии возрастный диапазон поиска в базе данных пользователи имеют tabla с именем "возраст" и возраст показывают как цифру, и мне нужна форма, в которой пользователи поиска по возрасту от возраста?
Вот код, пожалуйста, помогите мне :)
<form id="form1" name="form1" method="post" action="index.php">
<label>City</label>
<select name="city">
<option value="">--</option>
<?php
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." GROUP BY city ORDER BY city";
$sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
while ($row = mysql_fetch_assoc($sql_result)) {
echo "<option value='".$row["city"]."'".($row["city"]==$_REQUEST["city"] ? " selected" : "").">".$row["city"]."</option>";
}
?>
</select>
<input type="submit" name="button" id="button" value="Filter" />
</label>
<a href="index.php">reset</a>
</form>
<br /><br />
<table width="700" border="1" cellspacing="0" cellpadding="4">
<tr>
<td width="90" bgcolor="#CCCCCC"><strong>username</strong></td>
<td width="95" bgcolor="#CCCCCC"><strong>e-mail</strong></td>
<td width="159" bgcolor="#CCCCCC"><strong>city</strong></td>
</tr>
<?php
if ($_REQUEST["string"]<>'') {
$search_string = " AND (full_name LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%' OR email LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%')";
}
if ($_REQUEST["city"]<>'') {
$search_city = " AND city='".mysql_real_escape_string($_REQUEST["city"])."'";
}
if ($_REQUEST["from"]<>'' and $_REQUEST["to"]<>'') {
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date >= '".mysql_real_escape_string($_REQUEST["from"])."' AND to_date <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_city;
} else if ($_REQUEST["from"]<>'') {
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date >= '".mysql_real_escape_string($_REQUEST["from"])."'".$search_string.$search_city;
} else if ($_REQUEST["to"]<>'') {
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE to_date <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_city;
} else {
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE id>0".$search_string.$search_city;
}
$sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
if (mysql_num_rows($sql_result)>0) {
while ($row = mysql_fetch_assoc($sql_result)) {
?>
<tr>
<td><?php echo $row["username"]; ?></td>
<td><?php echo $row["email"]; ?></td>
<td><?php echo $row["city"]; ?></td>
</tr>
<?php
}
} else {
?>
<tr><td colspan="5">No results found.</td>
<?php
}
?>
</table>
Вы не должны использовать методы mysql, поскольку они устарели и будут удалены в будущем.
Я отправляю код с помощью PDO
.
Вы можете проверить документацию PDO здесь php.net
Вы можете запросить как:
try{
$conn = new PDO('mysql:dbname=db_name', 'username', 'password');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$range = $_POST['age_range'];
$query = $conn->prepare("SELECT * FROM table_name WHERE age <= $range");
$query->exec();
}
catch(Exception $e){
echo "Exception: " . $e->getMessage();
// you might not use the above code in your production code
// as might want not to show the errors and redirect to another custom error page
}
В приведенном выше коде мы создаем соединение с db с помощью pdo и атрибута set, чтобы запустить систему отчетов об ошибках и
переменный диапазон получает значение поля поведенческого возраста, предоставленного пользователем, и сохраняет его. И в строке запроса он получает все записи, для которых значение возрастного столбца меньше, чем заданный пользователем.
прежде всего, не используйте функции mysql_*
, потому что они устарели. Используйте расширение mysqli
или предпочтительный PDO
.
С помощью этих расширений вы можете создать подготовленный оператор, который предотвращает SQL-инъекцию.
Вот пример кода:
<?php
$db = new PDO('mysql://host=localhost;dbname=test_db', 'myuser', 'password');
$stmt = $db->prepare('SELECT * FROM table WHERE age < ?');
$stmt->execute([$age]);
$rows = $stmt->fetchAll();