php - 如何使用 AJAX 调用更改 SELECT 查询

标签 php jquery mysql ajax

我是 php 和 SQL 的新手,所以如果这很微不足道,我真的很抱歉。 我的站点有多个 div,其中包含表名。 HTML 的格式为:
<p class="listname">(table name)</p>
我正在尝试编写一个函数,以便当用户单击 div 时,该函数使用 innerHTML 获取文本并显示该特定表格的内容。 我写的jquery函数是:

$(document).ready(function(){
$(".listname").click(function(){
var x=($(this).html()).toLowerCase(); //this assigns the text in the class listname to the variable x
console.log(x);

$.ajax({
     url: 'http://localhost/fullcalendar/events.php',
     data: {name:x},
     type: "GET",
     success: function(json) {

     }
});
});

});

我的 PHP 代码是:

<?php

include 'ChromePhp.php';
ChromePhp::log('php running');

$json = array();
if($_POST['name']!=null)//check if any value is passed else use default value
{
    $table=$_GET['name'];

    ChromePhp::log($table);
}
else
{

    $table= 'event';

    ChromePhp::log($table);
}
$requete = "SELECT * FROM `$table` ORDER BY id";
try {
$bdd = new PDO('mysql:host=localhost;dbname=fullcalendar', 'root', 'root');
} catch(Exception $e) {
exit('Unable to connect to database.');
}
// Execute the query
$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));

// sending the encoded result to success page
echo json_encode($resultat->fetchAll(PDO::FETCH_ASSOC));

?>

当我第一次加载网站时,$table 的默认值用于查询,并检索数据。然而,当我尝试点击一个 div 时,正确的值被传递给 php 并分配给 $table(我在控制台中检查过)但显示的数据是默认表,即“事件”表。
我怎样才能解决这个问题?
PS:我所有的表都在同一个数据库中。

最佳答案

您正在检查 POST 数据:

if($_POST['name']!=null)

但是使用 GET 数据:

type: "GET"

因此 $_POST 数组将始终为空,并且您的 if 条件将始终为 false。您可能打算检查 GET 数据:

if($_GET['name']!=null)

还要注意这段代码中的其他几个问题:

  1. 您的success 回调是空的,所以这个AJAX 调用实际上不会在客户端执行任何操作。无论您想对返回的数据做什么,都需要在 success 函数中完成。
  2. 此代码对SQL 注入(inject)完全开放。像这样动态使用表名是...非常不正统。这可能表明设计有误。但是,如果您必须从用户输入中获取架构对象名称,那么您至少应该采用白名单方法来验证用户输入是否恰好是预期值之一。 切勿盲目地将用户输入作为代码执行。

关于php - 如何使用 AJAX 调用更改 SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42876048/

相关文章:

php - 使用 PDO、准备好的语句和用 bindParam 替换标记来更新 MySQL;收到 'variables don' t 匹配 token 错误

php - 将两个数组二一组合并设置键

php - 我需要在我的服务器上运行我作为任务编写的 PHP 脚本

php - 自定义添加到购物车按钮以将多个产品添加到购物车中,数量为 :woocommerce

jquery - 页面加载后如何加载图像?

javascript - 选择值后的下拉列表创建新字段

php - 错误 : Undefined index - PHP, MySql

php - 在 opencart 产品页面中没有得到正确的输出

jquery - 在没有事件处理程序的情况下使用 document.on

mysql - 恢复在 mysql 8 中使用 PASSWORD() 创建的密码