在php函数中,SQL查询不起作用

时间:2017-10-18 10:27:44

标签: javascript php mysql sql

所以主要的问题是,当我在post []之后做一些查询或者它只是在php的主代码中(而不是在函数中)它完全正常... 但是,当我尝试在PHP函数内部进行查询时,它永远不会工作,并且有点隐藏页面其余部分的任何其他代码...我在php和sql查询代码之后有几个div,他们只是不当我尝试通过函数查询时显示..

<script type="text/javascript">
    function callPhpVoteAdd(name) {
        var result = <?php voteAdd(name); ?>;
        alert(result);
        return false;
    }
</script>
<?php
echo '</br>';
$allsql = "SELECT * FROM voting ORDER BY votes DESC";
$result = mysqli_query($conn, $allsql);
if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        $name = $row["name"];
        $votes = $row["votes"];
        echo '<form method="post">
        name: "' .$name. '" - votes: "' .$votes. '" <input type="submit" name="'.$name.'" value="'.$name.'" onclick="callPhpVoteAdd(this.name)"/><br>
        </form>';
    }
}
function voteAdd($name) {
    if($conn->query("UPDATE voting SET votes = votes + 1 WHERE name = '".$name."' ") === TRUE) {
        echo "<script>alert('fuck yeah');</script>";
    }
    echo "shit";
} 

所以按下的按钮调用js函数,调用php函数

1 个答案:

答案 0 :(得分:0)

我猜你误解了JS和PHP的工作方式。 PHP适用于服务器端,而JS则适用于客户端。因此,PHP在发送到浏览器之前生成脚本/页面,因此当JS运行它时,所有<?php ?>都已被静态数据替换。

所以,简单地说,你只是在加载页面之后就无法从JS调用PHP函数,你尝试的方式(因为调用不再存在) - 检查你的源代码浏览器)。

您需要:

  • 使用带有“action”属性的表单;这会将数据发送到服务器,并调用在“action”中设置的php脚本,您可以在其中处理发送的数据,然后使用新的/更新的数据重新加载页面,
  • 使用ajax(几乎相同的东西:这会将数据发送到服务器并调用php脚本来处理它们,但不会重新加载页面,PHP脚本的输出 - 包含您需要的数据 - 将被发送回JS,一个回调函数,你可以用它来修改页面。)