Мне нужно отображать только строку id базы данных в текстовом поле, моя проблема заключалась в том, что данные отображают все строки и столбцы id's.
Я извлекал все данные из базы данных, но мне нужен только идентификатор в базе данных.
Вот мой код в формах, текстовых полях ввода и отправке.
<form action = "" method = "POST">
<div class = "row col-md-4">
<label>Amount</label>
<input type = "text" name = "id" class = "form-control validate">
<br>
<input type = "submit" class = "form-control btn-warning" name = "search" value = "Search Data"></input><br>
<?php
$connection = mysqli_connect("localhost","root","");
$db = mysqli_select_db($connection, 'qrproject');
if (isset($_POST['search']))
{
$id = $_POST['id'];
$query = "SELECT * FROM scratch_cards WHERE amount='$id' ";
$query_run = mysqli_query($connection, $query);
while($row = mysqli_fetch_array($query_run))
{
?>
<form action = "" method = "POST">
<input type = "text" name = "code" value = "<?php echo $row['code'] ?>" class = "form-control validate" id = "mapo">
<input type = "text" name = "pin" value = "<?php echo $row['pin'] ?>" class = "form-control validate" id = "mact">
<input type = "text" name = "status" value = "<?php echo $row['status'] ?>" class = "validate form-control" id = "soluong">
<input type = "date" name = "card_expiration" value = "<?php echo $row['card_expiration'] ?>" class = "validate form-control" id = "cardex">
<input type = "number" name = "card_validity" value = "<?php echo $row['card_validity'] ?>" class = "validate form-control" id = "cardval">
</form>
<?php
}
}
?>
</form>
@MA Здравствуйте, сэр, я отредактировал изображение выше, пожалуйста, посмотрите изображение там, где находится моя таблица данных.
@MA Да, сэр, вы правы, у меня несколько записей, но не с одним и тем же идентификатором ..
Просто чтобы вы знали, что у вас есть серьезная уязвимость к SQL-инъекциям в "SELECT * FROM scratch_cards WHERE amount='$id' ". Это потому, что вы не дезинфицируете свой ввод. Не могли бы вы дать нам образцы данных, с которыми вы работаете? Немного сложно понять, что находится между вашим кодом и изображением.
@domdambrogia, хорошо, когда я ввожу или набираю 500 в текстовом поле. тогда он должен дать мне только конкретный идентификатор. поэтому, когда я снова ввожу 500 в сумму текстового поля, он даст мне другой конкретный идентификатор, который не повторяется.
У вас есть ошибка в вашем запросе, вы проверяете $id на amount, и я предполагаю, что вы хотите проверить $id на id в базе данных. Попробуйте это: $query = "SELECT * FROM scratch_cards WHERE id='$id' "
Если вы можете рассказать нам больше, чего вы пытаетесь достичь, мы сможем вам лучше помочь.
@MA не работает, сэр, я не могу поставить id только потому, что я ввожу имя поля данных amount, а не id.
Если вы хотите отфильтровать данные по полю amount, вам следует ожидать более 1 записи, поскольку amount может повторяться и в других записях. Однако, если вам нужна всего одна запись, вы можете поместить LIMIT 1 в свой запрос или просто завершить цикл while после чтения одной записи.
Либо используйте $query = "SELECT * FROM scratch_cards WHERE amount='$id' LIMIT 1";, либо поместите break; до конца фигурной скобки while.
@MA В этом есть смысл, но где я могу поместить break в цикл while
Вставьте break; после </form><?php
Если вы хотите вывести только одну строку, просто измените while($row = mysqli_fetch_array($query_run)) на if ($row = mysqli_fetch_array($query_run))
@Nick, привет, это сработало! но как я могу это рандомизировать? он просто показывает 1 строку и 1 идентификатор
@Nick, мне нужно ввести больше 500, и результат должен быть другим и не повторяться
Чтобы каждый раз выводить новую строку, вы можете попробовать добавить в свой запрос ORDER BY RAND() LIMIT 1, то есть SELECT * FROM scratch_cards WHERE amount='$id' ORDER BY RAND() LIMIT 1.






Из ваших комментариев кажется, что вы хотите вывести единственную случайную строку, которая соответствует значению $_POST['id'] в столбце amount в вашей таблице. Вы можете сделать это, изменив свой запрос на это:
SELECT * FROM scratch_cards WHERE amount='$id' ORDER BY RAND() LIMIT 1
Вы также можете изменить
while($row = mysqli_fetch_array($query_run))
к
if ($row = mysqli_fetch_array($query_run))
хотя с изменением запроса, ограничивающим вывод одной строкой, это больше не является абсолютно необходимым.
Как уже указывалось, вы уязвимы для SQL-инъекции, вам следует прочитать этот вопрос, чтобы увидеть, как решить эту проблему.
Причина может заключаться в том, что у вас есть несколько записей с одним и тем же идентификатором. Не могли бы вы рассказать подробнее о таблице базы данных?