为什么 PHP jQuery Ajax 会给出执行错误?



我正在尝试使用 jQuery Ajax 删除 PHP 帖子,但由于某种原因我遇到了 2 种不同类型的错误。

控制台.log显示以下内容:

警告 PDO::p repare() 期望参数 1 为字符串,对象在第 41 行的 ajax_functions.php 中给出

致命错误未捕获错误:在 ajax_functions.php:43 中调用 bool 上的成员函数 execute()

有谁知道是什么原因造成的?

脚本

.JS
$('.post-remove-btn').on('click', function(e) {
e.preventDefault();  
var entered_name = $('.name-input').val();
$.ajax({
method: "POST",
url: 'functions/ajax_functions.php',  
data: { table1: table, tableNr1: tableNr,  'action': 'remove' },
success: function(data) {
if(data){
console.log(data);

}else{
alert('error');
}


},
error: function(requestObject, error, errorThrow) {
alert('error');
}
});
});    

AJAX_FUNCTIONS。.PHP

<?php

include("../database.php");

// AJAX
if( isset($_POST['action']) ) {

if($_POST['action'] == 'remove'){

$table1 = $_POST['table1'];     
$tableNr1 = $_POST['tableNr1'];  
if($table1 == 'post'){
$sql = $pdo->query('DELETE FROM posts WHERE id = ' . $tableNr1);   

$stmt2 = $pdo->prepare($sql); // PDO::prepare() expects parameter 1 to be string

$result = $stmt2->execute();  // Uncaught Error: Call to a member function execute() on bool
if($result==true){  
echo 'post deleted';
}
}elseif ($table1 == 'thread') {
echo 'thread';
}
}
}

?>

您已经使用$pdo->query(...)执行了查询。你不能使用结果作为参数来$pdo->prepare()- 这应该将SQL字符串作为参数。

您应该只使用prepare(),并使用参数来防止 SQL 注入。

if($table1 == 'post'){            
$stmt2 = $pdo->prepare('DELETE FROM posts WHERE id = :number');
$result = $stmt2->execute([':number' => $tableNr1]);
if($result){  
echo 'post deleted';
}
} elseif ($table1 == 'thread') {
echo 'thread';
}

相关内容

  • 没有找到相关文章

最新更新