【发布时间】:2015-08-29 05:41:29
【问题描述】:
我正在尝试使用复选框删除 PHP 中的 MySQL 记录。我回应了每一行,一切似乎都很好。变量和数组的值和格式是否正确。
但是当我尝试使用VAR_DUMP() 回显$delete(这是DELETE 查询)时,它显示bool(false)(这意味着它没有得到传递给它的变量$emailID 的值, 正确的?)。为什么?
if (isset($_POST['deleteUser']) && isset($_POST['marked_user']))
{
$marked_user = $_POST['marked_user'];
foreach($marked_user as $user => $emailID)
{
$emailID = (int)$emailID;
$delete = $base -> query( "DELETE FROM tickets.allowed_users WHERE allowed_users.emailID = '$emailID'");
}
header('Location: viewTickets.php?viewType=U');
}
这是来自一个单独的 PHP 文件的 HTML 部分:
echo "<form action='addUser.php' method='POST'><table class='results3' align='center' cellspacing='0'>
<tr><th class='head' id='headleft' width='10%'></th>
<th class='head' id='headright' colspan='4'>E-mail</th></tr>";
while( $row = mysqli_fetch_array($sql) )
{
$email = $row['email'];
$emailID = $row['emailID'];
echo "<tr><td width='1%' class='results'><input type='checkbox' name='marked_user[]' value='$emailID'></td>
<td class='results' colspan='4'>" . $row['email']."</td></tr>";
}
echo "<td colspan='3'><input type='submit' class='button' name='deleteUser' value='Delete'></td></form>";
这是我的桌子:
CREATE TABLE allowed_Users
(
emailID INT UNSIGNED NOT NULL AUTO_INCREMENT,
email VARCHAR(50) NOT NULL,
PRIMARY KEY( emailID )
);
【问题讨论】:
-
SQL 注入漏洞。使用查询绑定而不是直接插入用户提供的值,特别是删除。您可以为您的块 1 提供更多代码吗?我在那里看到一个关闭脚本标记,几乎没有上下文。
-
而
$base是一个合适的 MySQLi 对象吗?可以通过print_r($base)查看。 -
脚本标签不属于那里。它只是放错了地方。
$base属于处理 php 连接的单独文件中的一个类。我要问的代码只是我正在开发的票务系统的一部分。 Block1 代码就是这样。我在该 php 文件中的某个位置有另一个if isset函数,它属于它,它可以做其他事情(插入用户),它工作得很好。 -
我编辑了我的代码并删除了
INSERT语句以避免混淆,因为这些只是示例记录。我还发布了一个工作代码作为我的问题的答案。我成功了。
标签: php mysql checkbox foreach sql-delete