mysql_query会自动执行,但不会在onClick时执行

时间:2016-11-29 07:01:37

标签: php mysql sql

我是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的答案。

3 个答案:

答案 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");
?>"