从PHP脚本

时间:2016-01-25 11:31:16

标签: php jquery html

我是php / html的新手,我试图从html表单中获取值并将其设置为外部php脚本中的变量。

此变量用于在postgres数据库中运行SQL。单击按钮即可触发php脚本。

我的猜测是使用获取值是html格式的文本:

$SQL = $_GET['get_value'];

但我无法让它发挥作用。有人可以帮我解释一下该做什么吗?

我的HTML代码如下:

<!DOCTYPE html>
<html>
<body>

<form name="SQL" action="query_map.php" method="get">
  SQL:<br>
  <input type="text" name="SQL" id="get_value">
  <br>
 </form>
<button type="submit" id="script-button">
    Run the script
</button>

<script>
function runScript() {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
        if (request.readyState === 4) {
            if (request.status === 200) {
                alert('Ran the script, result was ' + request.responseText);
            } else {
                alert('Something went wrong, status was ' + request.status);
            }
        }
    };
    request.open('POST', 'http://localhost:8076/query_map.php', true);
    request.send(null);
    return false;
};

document.getElementById('script-button').onclick = runScript;
</script>

</body>
</html>

php代码如下:

<?php 
  $SQL = $_GET['get_value'];
  $db = pg_connect("host=localhost dbname=kopse_hof_put_25 user=postgres password=baf45baf")
    or die ("Could not connect to server\n"); 

    $query = pg_query($db, "create or replace view resultaat as
            select *
            from put_25_vlak_1_vulling
            where id = $SQL");
?>

我在Chrome控制台中看不到任何错误。我测试了PHP,这工作正常。

3 个答案:

答案 0 :(得分:1)

您通过输入名称而不是ID读取GET和POST,因此它应该是:

$SQL = $_GET['SQL'];

答案 1 :(得分:1)

使用通用 POST / GET

$SQL = $_REQUEST["SQL"];

答案 2 :(得分:0)

我相信我找到了解决方案,感谢@ Rahul Dambare

我在表单中添加了一个。所以我的表格如下:

<form name="SQL" action="query_map.php" method="get">
  SQL:<br>
  <input type="text" name="SQL" id="SQL">
  <br>
  <input type="submit">
 </form>

我收到了以下错误:

  

错误:输入结束时的语法错误第4行:其中id = ^在C:\ xampp \ htdocs \ query_map.php第9行。

存在此错误的原因是因为我的SQL认为我的回复是文本。有两种可能的解决方案。第一种解决方案是将文本类型的形式更改为整数。

第二个解决方案是添加一个pg_escape_string以在SQL中包含引号。 php如下:

&#13;
&#13;
<?php 
$test = $_REQUEST['SQL'];
$SQL = pg_escape_string($test);
        $db = pg_connect("host=localhost dbname=kopse_hof_put_25 user=postgres password=password")
		or die ("Could not connect to server\n"); 
		
        $query = pg_query($db, "create or replace view resultaat as
				select *
				from put_25_vlak_1_vulling
				where id = $SQL");
&#13;
&#13;
&#13;

感谢所有帮助