如何在mysql查询的javascript值中使用php变量?

时间:2019-02-06 07:20:52

标签: javascript php mysql

实际上,我有一个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>';
    }
}

?>

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说

  

我从哪里开始,客户端和服务器(JS和PHP)是分开的。一台在服务器上运行,一台在客户端计算机上运行。首先是PHP,因此只有PHP才能影响JS(这是PHP输出的一部分),因为在完全不同的计算机上,JS的状态无法在PHP中得知。基本上,您只需要从页面重新加载(例如表单提交)或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命令来选择整个表,这是一件很糟糕的事情。

干杯!