У меня проблема с одним из моих запросов. У меня есть запрос, который отображает список контактов из базы данных для определенной учетной записи. Когда я помещаю это в phpMyAdmin, я получаю 1 результат, как ожидалось. Когда я пытаюсь выполнить тот же запрос из php, я не получаю никаких результатов.
<?php
$getContacts="SELECT * FROM 'accountContactDetails' where acNo='ZZZ001' ";
$contactsResults = $conn->query($getContacts);
if ($contactsResults->num_rows > 0) {
while($contact = $contactsResults->fetch_assoc()) {
echo $contact['email'];
}
}
var_dump($contactsResults);
echo $getContacts;
?>
Строка внизу с vardump и запросом excecuted выводит это. Bool (false) SELECT * FROM accountContactDetails
где acNo = 'ZZZ001'
Когда я копирую тот же самый запрос в PHPmyAdmin, я получаю один результат. Это не связано с подключением к базе данных, поскольку это работает в файле как до, так и после этого запроса.
Может ли кто-нибудь подумать, почему это может не вернуть результат? Любая помощь с этим очень ценится!
Попробуйте указать вашу базу данных в предложении FROM:
SELECT * FROM myDatabase.accountContactDetails WHERE acNo='$acNo';
Это также должно быть подготовленное выражение, как они говорили выше:
$sql = 'SELECT * FROM myDatabase.accountContactDetails WHERE acNo=?';
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $acNo);
Попробуйте этот запрос
$getContacts="SELECT * FROM accountContactDetails where acNo = {$acNo}";
mysqli
вы должны использовать параметризованные запросы иbind_param
для добавления пользовательских данных в ваш запрос. НЕ используйте интерполяцию или конкатенацию строк для достижения этой цели, поскольку вы создали серьезную ошибку внедрения SQL . НИКОГДА не помещайте$_POST
,$_GET
или любые пользовательские данные непосредственно в запрос, это может быть очень вредно, если кто-то попытается использовать вашу ошибку.