document.getElementById() as PHP SQL 查询参数

document.getElementById() as PHP SQL Query parameter

我有一个问题,是否可以使用 document.getElementById().valuegetElementsByName().valuegetElementsByClassName().value 中存储的值作为 SQL 通过 [=44] 查询的参数=]?

示例。

我有这条线<input type="text" class="myinput" id="myinput" name="myinput" value="999-AAA-000">

然后我将数据存储在这个元素中。

<script>
function myFunction() {
  var foroutput = document.getElementsByClassName("myinput");
}
</script>

有没有办法将 document.getElementsByClassName("myinput")var foroutput 用作 SQL 通过 PHP 查询的参数?

场景:SQL 查询与 document.getElementsByClassName("myinput") 在同一页面内,如果不使用 <form> 是否也能正常工作?

这是我的代码

<input type="text" class="decid" id="decid" name="decid"> 
// the data passed into this input box will be used as a parameter for SQL Query $id


<table id="example2" class="table table-bordered">
<thead>
<th>Schedule Date</th>
<th>Schedule Name</th>
<th>Recorded In</th>
<th>Recorded Out</th>
<th>Day Count</th>
<th>Day Value</th>
<th>N.D. Value</th>
<th>Leave Count</th>
<th>R.H. Count</th>
<th>R.H. Value</th>
</thead>
<tbody>
<?php 
$id=$_POST['id'];
$sql = "SELECT fingerscanno, scheduledate, schedulename, recordin, recordout, noofdays, rate, nightdifferential, leaveday, regularholiday, specialholiday, referenceno
FROM payrollrecords WHERE fingerscanno='$user' and referenceno='$id'";

                    $query = sqlsrv_query($conn, $sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET));
                    while($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)){

 echo "
                        <tr>
                          <td>".$row['scheduledate']."</td>
                          <td>".$row['schedulename']."</td>
                          <td>".$row['recordin']."</td>
                          <td>".$row['recordout']."</td>
                          <td>".$row['noofdays']."</td>
                          <td>".$row['rate']."</td>
                          <td>".$row['nightdifferential']."</td>
                          <td>".$row['leaveday']."</td>
                          <td>".$row['regularholiday']."</td>
                          <td>".$row['specialholiday']."</td>
                        </tr>
                      ";
}

                  ?>
                  </tbody>
              </table>

一个样本就太棒了。谢谢。

编辑:

为什么这行不通?

<input type="text" class="decid" id="decid" name="decid">
<script type="text/javascript">
var abc = document.getElementById("decid").value;
<?php $abc = "<script>document.write(abc)</script>"?>   
</script>
<?php echo $abc;?>

看起来您认为 <?php $abc = "<script>document.write(abc)</script>"?> 可能会将 运行 宁 JavaScript 的结果存储在 PHP 变量中。这是不可能的。 PHP 运行 在服务器上构建 HTML 以发送到客户端的浏览器。 JavaScript 在被浏览器接收之前不会得到 运行。

服务器端: - PHP 和 MySQL 可以是 运行 - JavaScript 不能是 运行

客户端: - JavaScript 可以是 运行 - PHP 不能


在你的例子中

<input type="text" class="decid" id="decid" name="decid">
<script type="text/javascript">
var abc = document.getElementById("decid").value;
<?php $abc = "<script>document.write(abc)</script>"?>   
</script>
<?php echo $abc;?>

其实和

是一样的
<input type="text" class="decid" id="decid" name="decid">
<script type="text/javascript">
var abc = document.getElementById("decid").value;
</script>
<script>document.write(abc)</script>

因为您在变量 $abc 中存储了一个带有脚本标签的字符串,然后在几行之后回显该变量。


有几种方法可以使 JavaScript 与服务器通信。

1)

老式的方法只是使用告诉 PHP myinput 是什么的查询参数来刷新页面。

window.location.href = 'http://example.com/mypage?myinput=' + abc

然后在 PHP 中,您可以获得输入并像这样在 SQL 查询中使用它。

$abc = $_GET['myinput'] ?? false;
if ($abc){
    ...
}

2)

更好的方法是使用Ajax。 Ajax 允许您向服务器发送一些数据请求而无需刷新整个页面。如果您正在使用 jQuery,那么您可以使用 jQuery.get or jQuery.load 函数来执行此操作。然后,您将获得 PHP return 您要添加到页面的结果。有很多关于如何执行此操作的教程。

3)

如果您不使用 jQuery,则还有 2 个附加选项可用于向服务器发送请求。如果你不关心支持 IE 11,那么你可以使用新的 Fetch API. The other option is to use the axios library ,它更容易使用,但需要安装第三方库。它们的用法非常相似。