javascript - 在 php 函数内部时,Sql 查询不起作用

标签 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函数,js函数会调用php函数

最佳答案

我猜你误解了 JS 和 PHP 的工作方式。 PHP 在服务器端工作,而 JS(在您的情况下)在客户端工作。因此,PHP 在发送到浏览器之前生成脚本/页面,因此当 JS 运行它时,所有 <?php ?>已经被静态数据取代。

所以,简而言之,在页面加载后,您无法像您尝试的那样从 JS 调用 PHP 函数(因为该调用不再存在 - 检查您的源代码)浏览器)。

您需要:

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

关于javascript - 在 php 函数内部时,Sql 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46808030/

相关文章:

javascript - 如何使用 createPanner() 创建非常基本的左/右等功率平移;

javascript - 无法显示 jquery ui slider 的值

php - 将 mysql PDO 与 UPDATE 命令一起使用,但不要覆盖所有值

mysql - 对于 self 参照(关注,关注者)结构的社交网络应用程序,合适的数据库解决方案是什么?

php - 使用一个查询和一个 php 文件显示两个不同表中的图像

javascript - 尝试在 Node.js 中创建 Postgres DB 时出错

javascript - d3 - 搜索树并突出显示 d3 v5 的节点和路径

php - Joomla Mysql 查询问题

php - WooCommerce 中产品缩略图的 slider

php - 在迁移中使用 pt-online-schema-change