php - 无法将我的 $_GET 变量放入 SQL 语句中
问题描述
我尝试使用 $_GET 变量创建 SQL 语句
这是我的 handler.php:
if(array_key_exists("task", $_GET)){
$task = $_GET['task'];
}
if(array_key_exists("id", $_GET)){
$id_event = $_GET['id'];
}
if($task == "write"){
postMessage();
} else {
getMessages();
}
function getMessages(){
global $pdo;
global $id_event;
$resultats = $pdo->prepare("SELECT * FROM messages WHERE id_messages_evenement = :id ORDER BY date DESC LIMIT 10");
$resultats->execute([
"id" => $id_event
]);
$messages = $resultats->fetchAll();
echo json_encode($messages);
}
我的表格:
<form action="../src/App/handler.php?task=write&id=13" method="POST">
<input type="hidden" name ="auteur" id="auteur" value="<?php echo $id_membre ?>">
<input type="hidden" name ="id_event" id="id_event" value="<?php echo $id_event ?>">
<input type="text" id="message" name="message">
<button type="submit">Envoyer</button>
</form>
但 SQL 语句不起作用。
如果我尝试$id_event = 13;
而不是
if(array_key_exists("id", $_GET)){
$id_event = $_GET['id'];
}
该声明有效,因此您认为我的问题来自 $_GET['id']。
每次有人使用表单发布消息时,例如调用“../src/App/handler.php?task=write&id=[...]” id=13,所以我想做
SELECT * FROM messages WHERE id_messages_evenement = 13 ORDER BY date DESC LIMIT 10
编辑:这是我使用 AJAX 的 chat.js:
function getMessages(){
const requeteAjax = new XMLHttpRequest();
requeteAjax.open("GET", "../src/App/handler.php");
requeteAjax.onload = function(){
const resultat = JSON.parse(requeteAjax.responseText);
console.log(resultat);
const html = resultat.reverse().map(function(mess){
return `
<div class="message">
<span class="date">${mess.date.substring(11, 16)}</span>
<span class="author">${mess.id_auteur}</span> :
<span class="content">${mess.message}</span>
</div>
`;
}).join('');
const messages = document.querySelector('.messages');
messages.innerHTML = html;
messages.scrollTop = messages.scrollHeight;
}
requeteAjax.send();
}
function postMessage(event){
event.preventDefault();
const auteur = document.querySelector('#auteur');
const id_event = document.querySelector('#id_event');
const message = document.querySelector('#message');
const data = new FormData();
data.append('message', message.value);
data.append('auteur', auteur.value);
data.append('id_event', id_event.value);
const requeteAjax = new XMLHttpRequest();
requeteAjax.open('POST', '../src/App/handler.php?task=write');
requeteAjax.onload = function(){
content.value = '';
content.focus();
getMessages();
}
requeteAjax.send(data);
}
document.querySelector('form').addEventListener('submit', postMessage);
const interval = window.setInterval(getMessages, 1000);
getMessages();
解决方案
推荐阅读
- windows - RabbitMQ 安装 - 启用插件后避免服务重启
- arrays - Swift - 如果字符串为零。不要将其添加到数组中
- jcr - jackrabbit - 调用 javac 时出错。需要完整的 JDK(不仅仅是 JRE)
- gridview - Xamarin Forms 按钮在 Grid 内变平
- python - 如何使用 Python 更改文本并按下提交按钮?
- php - Laravel 5.6 - 在降价中使用 @foreach
- php - ParseError 语法错误,文件意外结束
- c# - UWP 视频流位图操作
- css - IE11中与Angular Material相关的悬停问题
- python - AttributeError:“numpy.ndarray”对象没有属性“step”