我是php的新手,我需要帮助。查询每次在页面加载时运行,而不是在我单击我的按钮时运行。
<input type="button" name="button" onclick="<?php
$temp_id = $row_RecStudent['stu_id'];
mysql_query("UPDATE tbl_studentdetail SET stu_queue = 0 WHERE stu_id = $temp_id"); ?>" value="Unqueue" />
这是非常令人沮丧的,因为我在循环中运行此按钮,但每次按钮加载它时,都会自动运行mysql_query,而不是在我点击它时。
解决了!检查AnthonyB的答案。
答案 0 :(得分:3)
每次在页面加载时运行查询,而不是在我单击我的按钮时运行。
这是因为onclick事件通常在浏览器中使用客户端脚本执行,这总是意味着javascript。你真正需要的是
<input type="button" name="button" onclick="js_function()" value="Unqueue" />
其中js_function是一个javascript,它会向页面发出ajax请求或只是导致表单被提交。你正在做的是使onclick等于PHP代码片段的结果,这显然发生在服务器端,并且与用户点击按钮完全没有任何关系。
答案 1 :(得分:1)
您应该使用AJAX请求,因为没有重定向或重新加载。 要使用下面的示例,您必须包含jQuery
<!-- data-id is the id you got before -->
<input type="button" data-id="<?php echo $row_RecStudent['stu_id']; ?>" name="button" class="button-on-click" value="Unqueue" />
<script type="text/javascript">
$(function() {
//On click on this kind of button
$(".button-on-click").on('click', function() {
var id = $(this).attr('data-id');
//Send AJAX request on page youraction.php?id=X where X is data-id attribute's value
//the ID used in mysql query
$.ajax({
url: "youraction.php",
method: "GET",
data: {
id: id
}
}).done(function() {
//Once it is done
console.log("OK!");
});
});
});
</script>
关于youraction.php
<?php
//Cast $_GET['id'] to integer to prevent SQL injection.
//If there is no id given, stop
if (empty($_GET['id'])) {
exit();
}
$id = (int)$_GET['id'];
mysql_query("UPDATE tbl_studentdetail SET stu_queue = 0 WHERE stu_id = $id");
注意,不推荐使用mysql_ *函数。相反,请使用mysqli_*函数或PDO。出于安全原因,您可以优先使用prepared statement。
答案 2 :(得分:0)
请注意,您应该为onClick
事件提及Javascript函数。你不能在这里编写PHP脚本。
解决此问题的一种方法是创建一个单独的PHP文件,其中包含查询。
// page1.php
<a href="action.php?stu_id=<?php echo $row_RecStudent['stu_id'] ?>">Unqueue</a>
// action.php
<?php
$temp_id = $_GET['stu_id'];
mysql_query("UPDATE tbl_studentdetail SET stu_queue = 0 WHERE stu_id = $temp_id");
header("Location:page1.php");
?>"