Javascript PHP:如何从DB中获取已创建文本框的值 背景

Javascript PHP:如何从DB中获取已创建文本框的值 背景,javascript,php,html,ajax,Javascript,Php,Html,Ajax,我是一个完全的网页设计初学者,我正在使用PHP和mySQL 手边的代码 这是我的HTML文件,名为UserRegistration.php <?php session_start(); ?> <html> <body> <script> function FillRecord(Id) { $.ajax({ type: "POST", url: "Algorithm/UserRegistration-FillUserRe

我是一个完全的网页设计初学者,我正在使用PHP和mySQL

手边的代码 这是我的HTML文件,名为UserRegistration.php

<?php
session_start();
?>
<html>
<body>
<script>
function FillRecord(Id)
{
     $.ajax({
     type: "POST",
     url: "Algorithm/UserRegistration-FillUserRecords.php",
     data:'Id='+Id,
     success: function(data)
     {
        document.forms["Frm_User"].elements["txtName"].value = "";
        document.forms["Frm_User"].elements["txtFName"].value = "";
        document.forms["Frm_User"].elements["txtMName"].value = "";
     }
     });
}
</script>
<form id="Frm_User" name="Frm_User" method="POST" action="Algorithm/UserRegistration-SaveDetails.php">
  <label for="txtName">Name</label>
  <input type="text" name="txtName" placeholder="Name" required>

  <label for="txtFName">Father Name</label>
  <input type="text" name="txtFName" placeholder="Father Name" required>

  <label for="txtMName">Mother Name</label>
  <input type="text" name="txtMName" placeholder="Mother Name" required>
</form>

<input type="button" onclick="FillRecord(1);">//1 is fixed at the moment
</body>
</html>
<?php
session_start();

include_once 'Connection.php';

if ($dbcon->connect_error)
{
    die("Connection failed: " . $dbcon->connect_error);
    header('Location: ../UserRegistration.php');
    exit();
}

//Search data from database on all fields except "SNo"
//----------------------------------------------------------------------------
$sql =  "Select * from usertable where id=".$_POST["Id"];
$result = $dbcon->query($sql);

$rows = array();
foreach ($result as $RowRecord)
{
    $_SESSION['UserRegistration_txtName'] = $RowRecord["Name"];
    $_SESSION['UserRegistration_txtFName'] = $RowRecord["FName"];
    $_SESSION['UserRegistration_txtMName'] = $RowRecord["MName"];
}
exit();
?>

我不能把它分开,因为字符串可以是任何东西,它可以充满逗号、新行字符和任何特殊符号

您的PHP代码实际上不会将您创建的会话变量输出到浏览器。要做到这一点,您需要这样的东西(我使用JSON作为发送数据的格式,因为它在接收端最容易使用)

然后,jQuery AJAX处理程序函数可以轻松地使用以下值填充表单:

function FillRecord(Id)
{
     $.ajax({
     type: "POST",
     url: "Algorithm/UserRegistration-FillUserRecords.php",
     data:'Id='+Id,
     dataType: "json", //Add this so data comes back as an Object
     success: function(data)
     {
        document.forms["Frm_User"].elements["txtName"].value = data.Name;
        document.forms["Frm_User"].elements["txtFName"].value = data.FName;
        document.forms["Frm_User"].elements["txtMName"].value = data.MName;
     }
     });
}

我希望我已经正确理解(并满足)了您想要实现的目标,如果没有,请随意说。

旁注:在
foreach($result..
中,您需要首先从结果中获取数据/数组。通常在
中执行($row=$result->fetch_row()){..
(或
fetch_assoc,fetch_array
,)
2nd:
在此foreach中,您将覆盖
$\u会话['UserRegistration\u txtName']
在每次迭代中,只有最后一个值会保持不变-这在这里可能没问题,因为你只需要一行。如果你想让它工作,你真的需要修复SQL注入错误。请看这里@Jeff谢谢你的提示,但在我的情况下,它只会得到一条记录,所以这不会是问题,但我也会尝试修复它,但你能告诉我吗告诉我如何在我的例子中使用session变量来显示要在ajax数据中接收的值(这里不需要会话变量),最好是json(使用json_encode):
echo json_encode($RowRecord)
。然后你会在javascript的
数据中得到一个数组,谢谢它对我有用,但我想知道,为什么我不能在AJAX响应中使用$\u SESSION变量,因为该值设置为浏览器?浏览器不会自动拥有任何会话变量,除非你以某种方式在PHP代码中显式输出它们(就像我在这个答案中所做的那样,在AJAX响应中打印它们)。否则,浏览器所拥有的只是一个会话ID(作为cookie发送)告诉服务器哪个会话是您的。如果这些值是在加载页面之前设置的,并且不会更改,则可以将它们作为Javascript变量包含在页面中,然后更改
FillRecord()
函数,以便在单击按钮时将其写入表单中(这样就不需要AJAX)。
foreach ($result as $RowRecord)
{
    $_SESSION['UserRegistration_txtName'] = $RowRecord["Name"];
    $_SESSION['UserRegistration_txtFName'] = $RowRecord["FName"];
    $_SESSION['UserRegistration_txtMName'] = $RowRecord["MName"];
}
// Create an array to send the data
$data = [
    'Name'  => $_SESSION['UserRegistration_txtName'],
    'FName' => $_SESSION['UserRegistration_txtFName'],
    'MName' => $_SESSION['UserRegistration_txtMName']
];
// Tell the browser that a JSON data file is coming
header('Content-type: application/json');
print json_encode($data);
exit();
function FillRecord(Id)
{
     $.ajax({
     type: "POST",
     url: "Algorithm/UserRegistration-FillUserRecords.php",
     data:'Id='+Id,
     dataType: "json", //Add this so data comes back as an Object
     success: function(data)
     {
        document.forms["Frm_User"].elements["txtName"].value = data.Name;
        document.forms["Frm_User"].elements["txtFName"].value = data.FName;
        document.forms["Frm_User"].elements["txtMName"].value = data.MName;
     }
     });
}