Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用AJAX调用更改SELECT查询_Php_Jquery_Mysql_Ajax - Fatal编程技术网

Php 如何使用AJAX调用更改SELECT查询

Php 如何使用AJAX调用更改SELECT查询,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我对php和SQL非常陌生,所以如果这是非常琐碎的话,我真的很抱歉。 我的站点有多个div,其中包含表名。HTML的格式为:(表名) 我试图编写一个函数,以便当用户单击div时,该函数使用innerHTML获取文本,并显示特定表的内容。 我编写的jquery函数是: $(document).ready(function(){ $(".listname").click(function(){ var x=($(this).html()).toLowerCase(); //this assigns

我对php和SQL非常陌生,所以如果这是非常琐碎的话,我真的很抱歉。 我的站点有多个div,其中包含表名。HTML的格式为:

(表名)


我试图编写一个函数,以便当用户单击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(我在控制台中进行了检查),但显示的数据是默认表,即“event”表
我怎样才能解决这个问题?

PS:我所有的表都在同一个数据库中。

您正在检查POST数据:

if($_POST['name']!=null)
但是使用GET数据:

type: "GET"
if($_GET['name']!=null)
因此
$\u POST
数组将始终为空,而
if
条件将始终为
false
。您可能想检查获取数据:

type: "GET"
if($_GET['name']!=null)

另外值得注意的是,该代码中还有几个其他问题:

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

  • 您正在检查POST数据:

    if($_POST['name']!=null)
    
    但是使用GET数据:

    type: "GET"
    
    if($_GET['name']!=null)
    
    因此
    $\u POST
    数组将始终为空,而
    if
    条件将始终为
    false
    。您可能想检查获取数据:

    type: "GET"
    
    if($_GET['name']!=null)
    

    另外值得注意的是,该代码中还有几个其他问题:

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

  • 嗯,您没有对AJAX调用做任何响应。请注意您的
    成功
    功能。。。它是空的。无论您想对从服务器返回的数据做什么,这都是您要做的。您确实不应该盲目地将用户输入作为SQL代码来执行。一个重要的注意事项是:如果不在SQL查询中转义,请不要使用从不受信任的源(例如,客户端提交的数据)接收的数据。使用
    $\u GET['name']
    而不进行任何转义将允许SQL注入。如果success函数为空,那么它第一次使用默认值时是如何工作的?我试图做的是从我的表中获取数据并将其显示在日历上。@monkeyD:
    “第一次使用默认值时它是如何工作的?”
    -这一定是在其他地方发生的。因为一个空函数实际上什么都不做。好吧,你没有做任何事情来响应AJAX调用。请注意您的
    成功
    功能。。。它是空的。无论您想对从服务器返回的数据做什么,这都是您要做的。您确实不应该盲目地将用户输入作为SQL代码来执行。一个重要的注意事项是:如果不在SQL查询中转义,请不要使用从不受信任的源(例如,客户端提交的数据)接收的数据。使用
    $\u GET['name']
    而不进行任何转义将允许SQL注入。如果success函数为空,那么它第一次使用默认值时是如何工作的?我试图做的是从我的表中获取数据并将其显示在日历上。@monkeyD:
    “第一次使用默认值时它是如何工作的?”
    -这一定是在其他地方发生的。因为空函数实际上什么都不做。