首页 > 解决方案 > 如何在 mysql 查询中的 javascript 值中使用 php 变量?

问题描述

实际上,我有一个 javascript 变量,我将它传递给 PHP 变量,并在我提交查询时将此变量用作 MySQL 查询,页面重新加载并且 javascript 变量的值已完成,因此查询不起作用我只想修改在我的代码中,或者有关于我的问题的另一个相关解决方案,请帮助我。当回显 PHP 变量时一切正常,它向我显示变量唯一的问题是在我的 SQL 查询中,在查询中具有 javascript 变量的 PHP 变量不起作用。

    <script>
var buttontext="esteem";
    <?php 
             $ff ="<script>document.write(buttontext);</script>";             
          ?>

</script>

<?php
  $servername="localhost";
    $username="root";
    $password="";
    $dbname="beelist";

$conn=mysqli_connect($servername,$username,$password,$dbname);
error_reporting(0);

    $connDB= mysqli_select_db($conn,'beelist');

if($_POST['sub'])
{
    echo $ff;

  $code=$_POST['Bid'];
     if($code!=""){
 $query="SELECT beaconid FROM `customer` WHERE `beaconid`  = '$code' && name = '$ff'";

$data = mysqli_query($conn,$query);

$res1=mysqli_fetch_array($data);

         if ($res1) {
     echo '<script> alert("Beacon found")</script>';               
            echo '<script> showp();</script>';

        } 
         else {
        echo '<script> alert("Beacon ID is wrong!")</script>';}

    }else{
     echo '<script> alert("Beacon ID is required")</script>';
    }
}

?>

标签: javascriptphpmysql

解决方案


正如我在评论中所说

我从哪里开始,客户端和服务器(JS 和 PHP)是分开的。一个在服务器上运行,一个在客户端计算机上运行。PHP 是第一位的,因此只有 PHP 可以影响 JS(因为这是 PHP 输出的一部分),在 PHP 中无法知道 JS 的状态,因为它位于完全不同的计算机上。基本上,您只需要从页面重新加载(例如表单提交)或 AJAX 发出请求,您可以将数据传回服务器以便它可以处理它。

基本上你现在所拥有的$ff就是这个文本:

 $ff ="<script>document.write(buttontext);</script>";   

而且因为你不回应它,它实际上从未作为源的一部分传递给客户端。

你的查询是这样的:

$query="SELECT beaconid FROM `customer` WHERE `beaconid`  = '$code' && name = '<script>document.write(buttontext);</script>'";

对我来说,这个话题太宽泛了,无法真正给你一个有效的答案,而且有很多教程可以更好地为我公正。但希望你明白现在发生了什么。

PS。您可以echo $query;在查询后立即进行测试。另请注意,您不应将 PHP 变量直接放在 SQL 中,否则您将面临针对您的站点的 SQLInjection 类型攻击的风险。例如,如果$_POST['Bid']="' OR 1 --您的查询是这样的:

 $query="SELECT beaconid FROM `customer` WHERE `beaconid`  = '' OR 1 --' && name = '<script>document.write(buttontext);</script>'";

--MySQL 中注释的开头在哪里。所以现在我只是通过将 SQL 命令注入到您的查询中来选择您的整个表,这是一件非常糟糕的事情。

干杯!


推荐阅读