Я много искал перед публикацией.:)
Я пытаюсь сделать простую вставку в MySQL.Я использую MySQL, используя подготовленные заявления.Ниже приведен код:
$sql_query = "UPDATE $table SET $name = AES_ENCRYPT(?,'$key') WHERE $id_name = '$_SESSION[$id_name]'";
$stmt = $mysqli->prepare($sql_query);
$stmt->bind_param('b', $value);
$stmt->execute();
Да, я заявляю, что $ mysqli с подключением к серверу базы данных mySQL ранее в коде.$ key также объявлен ранее в скрипте.Ниже приведен вывод в общий файл журнала mySQL при вызове этого кода:
120104 10:46:18 359 Connect root@localhost on payday-loan-leads
359 Query SELECT table_location, id_name, encrypt FROM insert_information WHERE required_field_name = 'first_name'
359 Prepare UPDATE personal_info SET first_name = AES_ENCRYPT(?,'^&IK8uBo92X04jhAHPUH(Y(8p3)&^ndlkj32') WHERE personal_id = '5282'
359 Execute UPDATE personal_info SET first_name = AES_ENCRYPT('','^&IK8uBo92X04jhAHPUH(Y(8p3)&^ndlkj32') WHERE personal_id = '5282'
359 Close stmt
359 Quit
Как видите, mySQL готовит запрос INSERT, но не захватывает значение $ value.Когда я удаляю AES_ENCRYPT из $ sql_query, он работает как шарм:
$stmt = $mysqli->prepare("UPDATE $table SET $name = ? WHERE $id_name = '$_SESSION[$id_name]'");
$stmt->bind_param('s', $value);
Так что проблема в функции AES_ENCRYPT в MySQL.Я попытался переместить функцию в строку bind_param, но это не сработало.У кого-нибудь есть идеи?