#php #mysql #mysqli
#php #mysql #mysqli
Вопрос:
у меня есть таблица, подобная приведенной выше
Я хочу выбирать и отображать стоимость, когда пикап и размещение совпадают с выбранными пользователем из выпадающего списка с указанными выше параметрами.
$result = mysqli_query($conn,"SELECT * FROM location
WHERE Pickup='". $pick. "' ");
while($row = mysqli_fetch_array($result))
{
echo "You have to pay " . $row['Cost'];
echo "<br>";
}
приведенный выше код даст мне 4 варианта, поскольку я не проверял равенство dropLocation
.
SELECT * FROM location
WHERE Pickup='". $pick. "' AND DropLocation='". $drop. "' "
Это не работает.
Как обрабатывать несколько условий?
Комментарии:
1. Можете ли вы объяснить, что вы имеете в виду
It is not working
?2. я думаю, что $ drop пуст или что-то нулевое
3. Этот второй запрос выглядит корректным и разумным с технической точки зрения, проблема не в этом. Но это пахнет уязвимостью атаки sql, если вы объединяете ввод на стороне пользователя в строку запроса подобным образом…
4. Покажите нам, откуда
$drop
пришли, и проверьте, пусто ли. Также это не то, как вы используетеmysqli_*
.5. myPick и myDrop являются атрибутами имен моего выпадающего списка $pick = isset($_POST[‘myPick’]) ? $ _POST[‘myPick’]: «; $ drop = isset($ _POST[‘myDrop’]) ? $ _POST[‘myDrop’]: «;
Ответ №1:
Попробуйте это
похоже, что в вашем коде есть уязвимость для атаки sql, попробуйте использовать подготовленную инструкцию mysqli.
<?php
$stmt = $conn->prepare("SELECT * FROM location WHERE Pickup=? AND DropLocation=?");
$stmt->bind_param('ss',$pick,$drop);
//The argument may be one of four types:
//i - integer
//d - double
//s - string
//b - BLOB
//change it by respectively
$stmt->execute();
$get_result =$stmt->get_result();
$row_count= $get_result->num_rows;
if($row_count>0)
{
while($row = mysqli_fetch_array($get_result))
{
echo "You have to pay " . $row['Cost'];
echo "<br>";
}
}
else
{
echo "result set empty";
}
$stmt->close();
$conn->close();
?>
Ответ №2:
Попробуйте это:
if(isset($_POST['myPick']) amp;amp; !isset($_POST['myDrop'])){
$result = mysqli_query($conn,"SELECT * FROM location
WHERE Pickup='". $pick. "' ");
}else if(!isset($_POST['myDrop']) amp;amp; isset($_POST['myPick'])){
$result = mysqli_query($conn,"SELECT * FROM location
WHERE DropLocation='". $drop. "' ");
}else if(isset($_POST['myDrop']) amp;amp; isset($_POST['myPick'])){
$result = mysqli_query($conn,"SELECT * FROM location
WHERE Pickup='". $pick. "' AND DropLocation='". $drop. "' ");
}
while($row = mysqli_fetch_array($result))
{
echo "You have to pay " . $row['Cost'];
echo "<br>";
}