Php 如何使用AJAX调用更改SELECT查询
我对php和SQL非常陌生,所以如果这是非常琐碎的话,我真的很抱歉。 我的站点有多个div,其中包含表名。HTML的格式为: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
(表名)
我试图编写一个函数,以便当用户单击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
函数中完成您正在检查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
函数中完成嗯,您没有对AJAX调用做任何响应。请注意您的
成功
功能。。。它是空的。无论您想对从服务器返回的数据做什么,这都是您要做的。您确实不应该盲目地将用户输入作为SQL代码来执行。一个重要的注意事项是:如果不在SQL查询中转义,请不要使用从不受信任的源(例如,客户端提交的数据)接收的数据。使用$\u GET['name']
而不进行任何转义将允许SQL注入。如果success函数为空,那么它第一次使用默认值时是如何工作的?我试图做的是从我的表中获取数据并将其显示在日历上。@monkeyD:“第一次使用默认值时它是如何工作的?”
-这一定是在其他地方发生的。因为一个空函数实际上什么都不做。好吧,你没有做任何事情来响应AJAX调用。请注意您的成功
功能。。。它是空的。无论您想对从服务器返回的数据做什么,这都是您要做的。您确实不应该盲目地将用户输入作为SQL代码来执行。一个重要的注意事项是:如果不在SQL查询中转义,请不要使用从不受信任的源(例如,客户端提交的数据)接收的数据。使用$\u GET['name']
而不进行任何转义将允许SQL注入。如果success函数为空,那么它第一次使用默认值时是如何工作的?我试图做的是从我的表中获取数据并将其显示在日历上。@monkeyD:“第一次使用默认值时它是如何工作的?”
-这一定是在其他地方发生的。因为空函数实际上什么都不做。