我尝试INSERT
并同时从数据库中DELETE
数据。每当我通过URL中的ID查看成员的信息时,将会有一个包含其信息的联动/链接以接受该成员。如果管理员单击“接受”按钮/链接,该成员将不再位于requests
表中(以及应该执行DELETE的那个),同时他的详细信息或数据将会插入另一个名为" members"的表中。但是当我单击“接受”时,它只会回显javascript以进行确认,当我点击"是"时,没有任何事情发生,它只是让我回到pendingRequests.php。我将在这里分享我的代码。
这是链接,点击查看 来自
<a href="/test/admin/view_request.php?view_id=<?php echo $row['id']; ?>" >VIEW</a>
这是成员数据显示的位置: view_requests.php
<?php
include ('dbcontroller.php');
if(isset($_GET['view_id']))
{
$id=$_GET['view_id'];
$sql = mysqli_query($conn, "SELECT * from requests where id='$id'");
$row = mysqli_fetch_array($sql);
?>
ID: <?php echo $row['id']; ?>
<div class=" col-md-9 col-lg-9 ">
<table class="table table-user-information">
<tbody>
<tr>
<td><h4><b>Profile Info</b></h4></td>
</tr>
<tr>
<td>Name:</td>
<td><?php echo $row['firstname']; ?> <?php echo $row['MI']; ?> <?php echo $row['lastname']; ?></td>
</tr>
<tr>
<td>Email-address:</td>
<td><?php echo $row['email']; ?></td>
</tr>
<tr>
<td>Gender:</td>
<td><?php echo $row['gender']; ?></td>
</tr>
<tr>
<td>Status:</td>
<td><?php echo $row['status']; ?></td>
</tr>
<tr>
<td>Date of Birth:</td>
<td><?php echo $row['bday']; ?></td>
</tr>
<tr>
<td>Contact Number:</td>
<td><?php echo $row['contactno']; ?></td>
</tr>
<tr>
<td><a href="javascript:view_id(<?php echo $row['id']; ?>) ">ACCEPT</a></td>
<td>DECLINE</td>
</tr>
<?php
}
$conn->close();
?>
</tbody>
</table>
</div>
<script type="text/javascript">
function view_id(id)
{
if(confirm('Are you sure you want to accept this member request? '))
{
window.location='acceptRequest.php?view_id=='+view_id;
}
}
</script>
这是链接/按钮代码,管理员点击了 ACCEPT &#34;以及那些拥有该ID的成员的数据来自&#34;请求&#34;表将删除,成员的信息将被插入&#34;成员&#34;表
<a href="javascript:view_id(<?php echo $row['id']; ?>) ">ACCEPT</a>
这是我的 acceptRequest.php 代码
<?php
include('dbcontroller.php');
if(isset($_GET['view_id']))
{
$sql = "SELECT * FROM requests WHERE id=".$_GET['view_id'];
$firstname = $row['firstname'];
$MI = $row['MI'];
$lastname = $row['lastname'];
$gender = $row['gender'];
$status = $row['status'];
$maiden = $row['maiden'];
$bday = $row['bday'];
$contactno = $row['contactno'];
$email = $row['email'];
mysqli_query($conn, "INSERT INTO members(id,'$firstname','$MI','$lastname','$gender','$status','$bday','$contactno','$email')");
mysqli_query($conn, "DELETE FROM requests WHERE id=".$_GET['view_id']);
header("Location: pendingrequests.php");
}
?>
答案 0 :(得分:0)
这是您的javascript代码:
<script type="text/javascript">
function view_id(id)
{
if(confirm('Are you sure you want to accept this member request? '))
{
window.location='acceptRequest.php?view_id=='+view_id;
}
}
</script>
您将参数传递给此函数并将其称为id
,但在此脚本的正文中,您使用名为view_id
的非存在变量
更改
window.location='acceptRequest.php?view_id=='+view_id;
到
window.location='acceptRequest.php?view_id='+id;
另请注意,我已将==
更改为该行中的=
此声明也是错误的
mysqli_query($conn, "INSERT INTO members
(id,'$firstname','$MI','$lastname','$gender',
'$status','$bday','$contactno','$email')");
我建议将id
保留为auto increment
列,它将自动创建,您无需传递值。
mysqli_query($conn, "INSERT INTO members VALUES
('$firstname','$MI','$lastname','$gender',
'$status','$bday','$contactno','$email')");
或者,如果它不是auto increment
列,则需要创建名为$id
的变量,并将查询语法更改为使用$id
而不是id
。
好的,如果它仍然不起作用,你需要从mysqli
这样得到一条错误消息。实际上,您应该始终检查所有mysqli
api。
$result = mysqli_query($conn, "INSERT INTO members VALUES
('$firstname','$MI','$lastname','$gender',
'$status','$bday','$contactno','$email')");
if ( $result === FALSE ) {
echo 'Insert ERROR: ' . mysqli_error($conn);
exit;
}
这应该向页面报告查询中的错误。
我注意到您捕获了$maiden = $row['maiden'];
,但您在查询中没有使用它!是否可以将该列设置为需要值,这就是查询失败的原因?或者完全错过该列,意味着maiden
后面的列被加载到与他们现在收到的数据不兼容的列中。
在我看来,最好使用这个更长但更精确的语法
$result = mysqli_query($conn, "INSERT INTO members
(colname,colname,colname,colname,
colname,colname,colname,colname,)
VALUES
('$firstname','$MI','$lastname','$gender',
'$status','$bday','$contactno','$email')");
然后至少你总是会将正确的数据加载到正确的列名中。
答案 1 :(得分:0)
您需要传递Scaling and Mapping
参数而不是函数id
。此外,您的网址view_id
中存在拼写错误。您的代码应如下所示:
==
您似乎在function view_id(id)
{
if(confirm('Are you sure you want to accept this member request? '))
{
window.location='acceptRequest.php?view_id='+id;
}
}
附近的SQL中输入了拼写错误。最好还提一下SQL中所需的列。你可以离开id槽,让MySQL自己做增量。此外,您应该将PHP代码放在if语句中以保持安全:
members(id,