私は非常にPHPとSQLの新機能ですので、これは非常に些細な場合は本当にすみません。 私のサイトには、その中にテーブル名を持つ複数のdivがあります。 HTMLは次の形式です。<p class="listname">(table name)</p>
ユーザーがdivをクリックすると、関数はinnerHTMLを使用してテキストを取得し、その特定のテーブルの内容が表示されるように関数を作成しようとしています。
AJAXコールを使用してSELECTクエリを変更するにはどうすればいいですか?
$(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コードは次のとおりです: 私が書いたjqueryの関数であり、私は最初のウェブサイトをロードすると
<?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));
?>
は、$表のデフォルト値は、クエリで使用され、データ検索されます。しかし、divをクリックしようとすると、正しい値がphpに渡され、$ table(コンソールでチェックされています)に割り当てられますが、表示されるデータはデフォルトのテーブル、つまり 'event'テーブルになります。
どうすればこの問題を解決できますか?
PS:すべてのテーブルが同じデータベースにあります。
まあ、あなたはAJAXコールに応答して何もしていません。あなたの 'success'関数に注目してください...それは空です。サーバーから戻ってきたデータで何をしたいと思っても、それはあなたがそれを行う場所です。 – David
また、このコードは** SQLインジェクション**に対して*オープンであることに注意してください。あなたは本当に盲目的にユーザーコードをSQLコードとして実行すべきではありません。 – David
重要な注記:**あなたがSQLクエリでエスケープすることなく、信頼できない送信元(クライアントが送信したデータなど)から受け取ったデータを使用しないでください。 '$ _GET ['name']'をエスケープせずに使うと、SQLインジェクションが可能になります。 –