我正在尝试将选定的复选框值从一个页面传递到另一个页面以在我的数据库上运行mysql语句。 这就是我所拥有的:
HTML
<form method='POST' action='move_compaudit.php'>
<input type='hidden' name='checkbox' value='0'/>
<input type='checkbox' name='checkbox' value='1'/>
PHP (此文件名为move_compaudit.php)
<?php
include('include/dbConnection.php');
$checkbox = isset($_POST['checkbox']) ? 'Set' : 'NotSet';
//SQL statement
$query = "SELECT * FROM compaudit;";
$results = mysqli_query($dbc,$query) or die('Error querying database');
$row = mysqli_fetch_array($results);
$query1 = "DELETE FROM compaudit WHERE serial_no = $row[7] AND $checkbox = 'Set'";
//Execute prepared MySQL statement
//$results1 = mysqli_query($dbc,$query1) or die('Error querying database');
print_r($query);
print_r($query1);
?>
我打印错误的查询:无论点击是否点击,我都会每次都这样做。
SELECT * FROM compaudit;DELETE FROM compaudit WHERE serial_no = 12345 AND Set = 'Set'
答案 0 :(得分:1)
如果要保持HTML原样,则需要检查$ _POST ['checkbox']的实际值,而不是检查它是否已设置。您的隐藏字段可确保即使未选中,$ _POST仍会获得“复选框”的值。
<?php
include('include/dbConnection.php');
$checkbox = ($_POST['checkbox'] == '1') ? 'Set' : 'NotSet';
....
答案 1 :(得分:0)
Set
是mysql中的关键字:)你应该用`
答案 2 :(得分:0)
如果您在复选框之前声明隐藏了相同名称,则此变量对于isset将永远为真。
查看@GameBit提示,使用反引号转义字段并引用/转义所有变量,然后再将其用于查询。