Теперь некоторые части моего кода больше не работают.
Версия PHP (v7.4) не изменилась.
Нарушающий элемент включает вызов mysqli_stmt_execute(), который теперь генерирует исключение.
Вот мой исходный код (который отлично работал под MySql v5.7): -
Код: Выделить всё
if (!mysqli_stmt_execute($stmt))
{
error_log("mysql error: " . mysqli_error($mysqli));
error_log("prep_bind_exec_2(): mysqli_stmt_execute returned false");
return false;
}
Код: Выделить всё
Incorrect arguments to mysqld_stmt_execute in
Stack trace:
mysqli_stmt_execute(Object(mysqli_stmt))
prep_bind_exec_2(Object(mysqli), ' SELECT DISTIN...', 'ssssssdd', '2', '1', '2', '3', '4', '4', 0, 1000000000)
Код: Выделить всё
mysqli_stmt_execute(mysqli_stmt $statement, ?array $params = null): boolТем не менее, я изменил свой код следующим образом, чтобы увидеть, может ли это иметь значение:-
Код: Выделить всё
if (!mysqli_stmt_execute($stmt, ['2','1','2','3','4','4','0','1000000000']))
{
error_log("mysql error: " . mysqli_error($mysqli));
error_log("prep_bind_exec_2(): mysqli_stmt_execute returned false");
return false;
}
Итак, теперь я немного озадачен, поскольку нахожусь не знаю, нужен ли mysqli_stmt_execute() массив $params или нет.
SQL выглядит следующим образом: -
Код: Выделить всё
SELECT DISTINCT CONTACT.contact_id, CONTACT.address_region, CONTACT.cost_to_request
FROM CONTACT
LEFT JOIN STAKEHOLDER ON CONTACT.contact_id = STAKEHOLDER.contact_id
LEFT JOIN PRODUCT_RANGE ON CONTACT.contact_id = PRODUCT_RANGE.contact_id
LEFT JOIN CAPABILITY ON CONTACT.contact_id = CAPABILITY.contact_id
LEFT JOIN PRODUCT_FEATURE ON CONTACT.contact_id = PRODUCT_FEATURE.contact_id
WHERE
CONTACT.active = '1'
AND STAKEHOLDER.role_id IN (?)
AND CAPABILITY.technology_id IN (?,?,?,?)
AND PRODUCT_RANGE.product_type_id IN (?)
LIMIT ?,?
Код: Выделить всё
params=["2","1","2","3","4","4",0,1000000000]
Подробнее здесь: https://stackoverflow.com/questions/784 ... mysql-v8-0