如何在php mysql查询中获取JavaScript变量?

时间:2018-07-14 07:33:40

标签: javascript php mysql

我是Java和PHP的新手。谁能让我知道如何在php变量中使用javascript变量,我想在MySQL查询中使用该php变量从MySQL数据库中获取数据。是否可以直接在MySQL查询中使用javascript变量?

我已经尝试过,但无法获得结果。我在下面附加了代码

<script>
var baccount = document.getElementById('accountid');
var bacc = baccount.value;
</script>

<?php 

$abcd = '"+bacc+"';

$quer=mysql_query("SELECT * from fpay_user where account_id='$abcd'");


$result=mysql_fetch_array($quer);

$rbal = $result['balance'];

echo $rbal;

?>

2 个答案:

答案 0 :(得分:0)

这不是那么简单。 Javascript在浏览器(客户端)中运行,而php在Web服务器(主机)中运行。这是两台不同的计算机。要将数据从客户端传递到主机,您可以通过javascript向服务器上的特定url发出一个http请求。服务器发送响应后,您可以再次使用javascript处理它。

一个示例(使用jQuery)将是:

<script>
  // success will be called when the server sent a response.
  function success(result) {
    // result.responseJSON is a javascript object: { balance: 1234 }
    let balance = result.responseJSON.balance
  }

  $.ajax({
    url: '/path/to/script.php',
    data: {
        bacc: baccount.value
      },
    success: success,
    dataType: 'json'
  });
</script>

在php中,您可以获取传递的值,进行查询并返回结果:

<?php
  // get the passed value
  $abcd = $_GET['bacc'];

  // do the query SAFELY. See explanation below.
  $quer = mysql_query("SELECT * from fpay_user where account_id='" . mysql_escape_string($abcd) . "'");
  $result=mysql_fetch_array($quer);

  // Now return the result as json string
  header('Content-Type: application/json');
  // This will encode the result as: "{balance: 1234}"
  echo json_encode($result);

一件非常重要的事情。您应该始终使用mysql_escape_string之类的东西来清理接收到的值。如果不这样做,则您的软件容易受到SQL注入的影响。我已将此函数调用添加到您的示例中。

答案 1 :(得分:0)

您需要了解客户端语言和服务器语言的区别。

在您的代码中,JavaScript在浏览器中执行,而PHP在您的服务器中执行。为了使PHP知道客户端发生了什么,您的客户端必须通过查询字符串,表单发布或原始数据发布将该信息发送到服务器。

对于您的情况,您可以使用JavaScript将Ajax请求发送到服务器(使用本机XMLHttpRequest或jQuery)

$.ajax({
type: "POST",
  url: url,
  data: {bacc:value},
});

然后您的PHP可以通过$ _POST [“ bacc”]

访问它

请理解,尽管您可以将其写入同一文件中(这是一种不好的做法),但它们是在不同的位置(客户端或服务器)执行的