Использование именованных параметров в подзапросе MySQL с PHP8MySql

Форум по Mysql
Ответить
Anonymous
 Использование именованных параметров в подзапросе MySQL с PHP8

Сообщение Anonymous »

У меня есть 2 таблицы клиентов и адресов (каждый клиент может иметь много адресов)
Таблица клиентов имеет два интересующих поля:
userName (varchar)
userID (varchar)
Таблица адресов имеет два интересующих поля
userID (varchar)
addressName (varchar)
Я хочу выбрать адресные имена для конкретного клиента, используя:

Код: Выделить всё

$customerName = 'mmcp42';
$sql = "SELECT addressName FROM addresses
WHERE userID = (SELECT userID FROM customers WHERE userName = :userName)";
$stmt = $db->prepare($sql);
$stmt->bindParam(':userName', $customerName);
$stmt->execute();
$addresses = $stmt->fetchall();
Это отлично работает с PHP 7.4, но не работает с PHP 8.0 и выше; он возвращает пустой массив.
Единственный способ заставить его работать — сначала запустить подзапрос, чтобы получить идентификатор пользователя, а затем подключить его в качестве параметра к основному запросу. Это неуклюже, но есть то преимущество, что оно работает с PHP 7.4 и PHP 8.
Я не могу понять, что делаю неправильно.
Можете ли вы показать мне ошибку?
Я отредактировал его, чтобы показать примерное значение $customerName

Подробнее здесь: https://stackoverflow.com/questions/798 ... -with-php8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»