Я запутался для переменной post в запросе sql,
вот пример моего кода report.php
<form action="report.php">
<select id="status" name="status">
<option value="MARRIED">married</option>
<option value="SINGLE">Single</option>
<option value="ALL">ALL</option>
</select>
<input type="submit" value="Seach">
</form>
<?php
$status= $_GET['status'];
// Create DB connection
$sql = "SELECT * FROM member WHERE status ='$status'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<B>id: </B>" . $row["user_id"]. " -- <b>Date Record:</b> " . $row["created"]. " -- <b>Last Seen</b> " . $row["last_seen"]. " -- <b>Status: </b> "}
} else {
echo "0 results";
}
$conn->close();
?>
Как мне сделать запрос, если выбрано условие «ВСЕ»?
В этом случае было бы очень разумно вместо этого хранить переменную $ status в POST, поскольку запрос SQL зависит от того, какое значение хранится в URL-адресе, и, следовательно, предоставляется пользователю.
Другое дело, поскольку здесь вы имеете дело с унаследованным кодом, чтобы убедиться, что вы максимально отфильтровали пользовательский ввод и SQL-запрос. Преимущество использования устаревшей и устаревшей функциональности заключается в том, что вы по-прежнему будете уязвимы для атак XSS и SQL-инъекций независимо от принятых вами мер предосторожности, поэтому настоятельно рекомендуется использовать любой из MySQLi или же PDO (PHP Data Objects) вместо этого, поскольку они предлагают более стабильную и расширенную функциональность.
$status = htmlspecialchars($_GET['status'], ENT_QUOTES);
$where = '';
if ($status != 'ALL') {
$where = 'WHERE status = "$status"';
}
$sql = mysql_real_escape_string('SELECT * FROM member ' . $where);
$results = mysql_query($sql);
Я не знаю PHP, так что это не точный код, но концепция должна быть такой
if( $status == 'ALL' )
$sql = "SELECT * FROM member";
else
$sql = "SELECT * FROM member WHERE status ='$status'";
В PHP файле
<?php
$status= $_GET['status'];
if($status == 'ALL'){
$where = '';
}else{
$where = 'status = '".$status."' ';
}
// Create DB connection
$sql = "SELECT * FROM member WHERE ".$where." ";
?>