【发布时间】:2021-07-26 09:14:43
【问题描述】:
我想获取具有特定名称的所有用户,并且此名称在 javascript 变量中,并且此代码不起作用我应该怎么做?
<table id="table">
<tr>
<td>id</td>
<td>name</td>
<td>info</td>
</tr>
</table>
<script>
var table = document.getElementById("table");
$.ajax({
type:"POST",
url:"process.php",
data:{name:"mike"}
});
</script>
<?php include 'process.php'; ?>
<?php foreach ($users as $user) : ?>
<script>
var row = table.insertRow(1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell1.innerHTML="<?= $user->id ?>";
cell2.innerHTML="<?= $user->name ?>";
cell3.innerHTML="<?= $user->info ?>";
</script>
<?php endforeach; ?>
php
$name = $_POST["name"];
$database = [
'host' => 'localhost',
'dbname' => 'dbname',
'user' => 'user',
'pass' => ''
];
try {
$db = new PDO("mysql:host={$database['host']};dbname={$database['dbname']}", $database['user'], $database['pass']);
} catch (PDOException $e) {
die("An error happend, Error: " . $e->getMessage());
}
function getAllUsers(){
global $db;
$sql = "SELECT * FROM users WHERE $name = name";
$stmt = $db->prepare($sql);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_OBJ);
}
$users = getAllUsers();
错误是“第 2 行 process.php 中未定义的数组键“名称”” 你能帮我把我的数据发送到我的 php 文件并根据它获取查询吗
【问题讨论】:
-
你真的是想从用户那里得到列名吗?你不是说
name = $name(它还有很多其他问题,比如没有引用的值以及对SQL 注入完全开放)?请阅读How to prevent SQL injection in PHP -
更改 $sql = "SELECT * FROM users WHERE $name = name"; to $sql = "SELECT * FROM users WHERE name = $name";
-
您正在对
process.php进行ajax 调用(我认为这是PHP 代码?),您在其中传递了参数name,但为什么还要包含该PHP 文件?那时,没有$_POST['name'](因为你还没有在那个页面上发布任何东西,只是加载了它)。 Ajax 调用的目的是什么?它将从数据库中选择数据,但不对其进行任何操作。 Ajax 调用是对服务器的完全独立的请求。 -
马格努斯·埃里克森。首先是想使用 ajax 从数据库中获取数据,但它发出了一些问题,希望将名称发送到 php 并获取具有该名称的所有用户并将其显示在表中我应该怎么做?
-
在AJAX调用从中获取数据后,这里包含php文件没有意义。
标签: javascript php html jquery ajax