Не удается вставить данные в базу данных | Фатальная ошибка: Неперехваченное исключение PDO: SQLSTATE[42000]: Синтаксическая ошибка или нарушение доступа: 1064

#php #mysql #pdo

Вопрос:

Ошибка: неустранимая ошибка: Неперехваченное исключение pdoexception: кодом sqlstate[42000]: синтаксическая ошибка или нарушение прав доступа: 1064 у вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует вашей версии сервера MariaDB в для правильного синтаксиса, чтобы использовать вблизи «, ‘0.02’ , ‘MINTME’, ‘0x9cDc95C267BFa706aBF7f5c9C7340323d605bfa4’, ‘2021-09-…’ в строке 1 C:xampphtdocspayoutRequest.php:53 трассировки стека: #0 C:xampphtdocspayoutRequest.php(53): метода pdostatement->выполнить(массив) #1 {главный} брошенный в C:xampphtdocspayoutRequest.php на линии 53

 $sql = "INSERT INTO transactions (transaction_id, user_id, amount, type, wallet_address, date, av_hashes, av_amount) VALUES('$generatePayoutID',$transaction_userid', '$inputAmounts' , '$inputCurrency', '$inputWallet', '$YMD', '$av_hashes', '$av_amount')";
$statement = $conn->prepare($sql);
$statement->execute([
':transaction_id' => $generatePayoutID,
':user_id' => $transaction_userid,
':amount' => $inputAmounts,
':type' => $inputCurrency,
':wallet_address' => $inputWallet,
':date' => $YMD,
':av_hashes' => $av_hashes,
':av_amount' => $av_amount
]);
 
 $sName = "localhost";
$uName = "root";
$pass = "";
$db_name = "prunity_db";

try {
    $conn = new PDO("mysql:host=$sName;dbname=$db_name", 
                    $uName, $pass);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
  echo $e->getMessage();
}
 

Ответ №1:

Я наконец-то решил эту проблему!

Решение:

 $insert_transaction = "INSERT INTO transactions(transaction_id, user_id, amount, type, wallet_address, date, av_hashes, av_amount)
VALUES(:transaction_id,:user_id,:amount,:type,:wallet_address,:date,:av_hashes,:av_amount)";
$statement = $conn->prepare($insert_transaction);
$statement->execute([
    ':transaction_id' => $generatePayoutID,
    ':user_id' => $transaction_userid,
    ':amount' => $inputAmounts,
    ':type' => $inputCurrency,
    ':wallet_address' => $inputWallet,
    ':date' => $YMD,
    ':av_hashes' => $av_hashes,
    ':av_amount' => $av_amount
]);
 

Комментарии:

1. Не могли бы вы, пожалуйста, объяснить, почему этот ответ является решением?

2. Похоже, что токены в операторе VALUES() были изменены с $blah на :blah