mysqli_query在功能内部自动激活?

时间:2018-12-16 10:35:08

标签: javascript php sql

无论出于什么原因,我的数据库都会像函数一样运行进行更新,但是它从不回显任何内容。当我重新加载页面时,它会自动将名称设置为“ John”,但我从未单击该按钮。

    <?php
    function a(){
      $con = mysqli_connect("localhost", "example", "example", "example");
      $sql = "UPDATE User SET name = 'John' WHERE name = '$username'";

      mysqli_query($con, $sql);

      //test to see if function fires:
      echo "function executed";
    }
    ?>

这是我的html / javascript代码:

    <script type="text/javascript">
    function b(){
      document.write("<?php a(); ?>");

      //test if javascript function executes:
      alert("function b() executed");
    }
    </script>

    <button onclick="b()">Click me!</button>

我必须使用javascript,因为我的整个页面都是一个表单(出于单个保存按钮的目的),并且您不能直接让按钮执行php函数。

我真的很困惑为什么它不回显,但是当我重新加载页面时它确实更新了我的数据库,请帮忙。

2 个答案:

答案 0 :(得分:1)

当然,由于此行,您每次加载页面时都会更新数据库

document.write("<?php a(); ?>");

每次加载页面时,您正在调用a()来更新数据库

函数a未回显"function executed"的原因是确实,但是您在页面上看不到它,因为它在行中回显了。我相信您会在页面源代码中看到它。

当PHP解析器解析您的脚本时,它将生成并对此进行响应

document.write("function executed");

答案 1 :(得分:0)

您需要使用Ajax来通过单击button来调用PHP脚本。像下面这样的东西会起作用。

不要在页面上包含PHP脚本,并且只有在点击button之后才会调用mysql。

<script type="text/javascript">
function ajax(url) {
    var http = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari, IE7+ ...
        http = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE 6 and older
        http = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (! http) {
        // old browser or terminal maybe?
        return false;
    }
    http.onreadystatechange = function() {
        if ((http.readyState == 4) && (http.status == 200)) {
            // do stuff with the html/json/data returned
            // this alert will trigger once the PHP is run.
            alert(http.responseText);
        }
    }
    http.open('GET',url,true);
    http.send(null);
}

function b(){
    // call the code on PHP script to run.
    ajax("/path/to/your/php");
    //test if javascript function executes:
    // this alert should fire first.
    alert("function b() executed");
}
</script>

<button onclick="b()">Click me!</button>