使用Javascript将变量传递给php MySQL脚本

时间:2015-02-18 16:36:02

标签: javascript php

我从其他来源借用了此代码。 现在,我正在尝试修改它。

我需要将$ q的内容传递给我的php页面,并将其用作我的SQL语句中的where子句。

我的Javascript:

<script>
  function subject(str) {
    if (str == "") {
      document.getElementById("subject").innerHTML = "";
      return;
    } else { 
      if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
      }
      xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
          document.getElementById("subject").innerHTML = xmlhttp.responseText;
       }
     }
     xmlhttp.open("GET","form_get.php?q="+str,true);
     xmlhttp.send();
    }
  }
</script>

在我使用的html选择代码中:      onchange="subject(this.value)"

我的PHP

$q = intval($_GET['subject']);
//if (!empty($_GET['q'])){
  //$q = $_GET['q'];
//}
include('../conn/conn.php');
$sql = "select DISTINCT grade FROM primary_skills where subject= $q ";

如您所见,我将$ q传递给我的SQL语句。 我知道intval返回一个数字,但是当我尝试其他类型(例如strval)时,它会破坏脚本。当我尝试上面注释掉的部分时,它会打破脚本。

当我将php更改为:$q=$_GET["q"];时,我收到错误:form_get.php?q =读取500(内部服务器错误)。 这告诉我$ q确实从选项列表中拉出来,但还有其他事情正在发生......

2 个答案:

答案 0 :(得分:1)

问题出在你的php上,你想要获得q而不是主题

$q = intval($_GET['q']);

include('../conn/conn.php');
$sql = "select DISTINCT grade FROM primary_skills where subject= $q ";

答案 1 :(得分:0)

$q = intval($_GET['subject']);

这看起来不对 - 如果不是$q = intval($_GET['q']);