mysql — php mysqli не возвращает значение

Вот код, который вызывает у меня проблему:

$letter = $_POST['artistButton'];
$result = $mysqli->query("SELECT * FROM `Generic` WHERE `songName` LIKE '$letter%'");
$row    = $result->fetch_array();

while ($row = $result->fetch_array()) {
$Artist = $row['Artist'];
$songName = $row['songName'];
$Duration = $row['Duration'];
$URL = $row['URL'];
$Genre = $row['Genre'];
echo "<input type='submit' value='$songName' name='artistButton'>";
echo "<br />";
}

Утверждение верно, я сохранил его в переменной и распечатал на экране, затем запустил из базы данных, и он напечатал результаты, которые я хотел, так что это определенно не так. По какой-то причине, хотя это не отображается. Я предполагаю, что это как-то связано с тем, что я испортил, преобразуя из mysql в mysqli. Спасибо -Сэм

1

Решение

Ясно, что некоторые коды вырезаны, но попробуйте удалить это лишнее:

$row = $result->fetch_array();

И использовать:

while($row = $result->fetch_assoc()) {

Так как вы все равно заинтересованы в ассоциативных индексах.

Важное примечание: так как вы используете mysqli_*используйте вместо этого его параметризованные запросы. Не используйте напрямую $_POST значения по запросу.

$letter = "{$_POST[artistButton]}%";
$stmt = $mysqli->prepare('SELECT * FROM `Generic` WHERE `songName` LIKE ?');
$stmt->bind_param('s', $letter);
$stmt->execute();

$result = $stmt->get_result();

while($row = $result->fetch_assoc()) {
$Artist = $row['Artist'];
$songName = $row['songName'];
$Duration = $row['Duration'];
$URL = $row['URL'];
$Genre = $row['Genre'];
echo "<input type='submit' value='$songName' name='artistButton'>";
echo "<br />";
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]