在我在这个网站上搜索这个解决方案之后,我找不到任何东西。这是基本的PHP代码,仅用于测试。
的index.php
<input type="checkbox" name="chk" id="chk" value="1" />
<button type="button" name="" id="submit">TEST</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#submit').click(function(){
var check = $('#chk').val();
$.ajax({
url:"qry.php",
method:"POST",
data: {check:check},
success:function(data)
{
//alert(data);
window.location.reload();
}
});
});
});
</script>
qry.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "check";
// Create connection
$connect = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($connect->connect_error) {
die("Connection failed: " . $connect->connect_error);
}
if($_REQUEST['chk'] == true){
$stok = '1';
}
elseif ($_REQUEST['chk'] == false) {
$stok = '0';
}
$query = "INSERT INTO test(checked) VALUES('$stok')";
$result = mysqli_query($connect, $query);
if ($result === TRUE) {
echo "Zahtev je uspešno poslat!";
} else {
echo "Error: " . $query . "<br>" . $connect->error;
}
?>
如何将复选框选中true或false设置为mysql,然后在html中回显?它总是在mysql boolen中设置为0。
<input type="hidden" name="chk" id="chk" value="1" <?php if ($checked == '1') {echo 'checked';} else {} ?>/>
我尝试了这个网站上的所有内容,但没有任何效果。
答案 0 :(得分:0)
您将值写入check
,但请从$_REQUEST['chk']
读取。那不会奏效。将其更改为$_REQUEST['check']
。
您正在使用val()
获取复选框的状态,您应该使用checked
。
此外,您可能对SQL注入开放,开始使用预准备语句。
答案 1 :(得分:0)
在发送AJAX请求时添加另一行。
发送复选框的值时,请发送1
或0
。
它将减少我们在PHP端的工作。
所以,代码应该是:
var check = $('#chk').is(":checked");
check = (check) ? 1 : 0;
最终代码应为:
<input type="checkbox" name="chk" id="chk" value="1" />
<button type="button" name="" id="submit">TEST</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#submit').click(function(){
var check = $('#chk').val();
check = (check) ? 1 : 0;
$.ajax({
url:"qry.php",
method:"POST",
data: {check:check},
success:function(data) {
//alert(data);
window.location.reload();
}
});
});
});
</script>
和PHP:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "check";
// Create connection
$connect = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($connect->connect_error) {
die("Connection failed: " . $connect->connect_error);
}
$stok = $_REQUEST['chk'];
$query = "INSERT INTO test(checked) VALUES('$stok')";
$result = mysqli_query($connect, $query);
if ($result === TRUE) {
echo "Zahtev je uspešno poslat!";
}
else {
echo "Error: " . $query . "<br>" . $connect->error;
}
?>
答案 2 :(得分:0)
试试这个Jquery
。这将摆脱你所拥有的永远有价值的问题。这个代码的作用是当你点击&#34;提交&#34;按钮检查复选框的状态。如果选中该复选框,则代码将采用选中的复选框值并在ajax函数中发送该值,如果未选中,则将分配值0并使用ajax
发送。
执行此操作将减少必须由后端PHP
完成的工作。我还对您的PHP
代码进行了一些更改。
$(document).ready(function() {
$(document).on('click', '#submit', function() {
if ($("#chk").is(":checked")) {
var chk = $('#chk').val();
}else{
chk = 0;
}
$.ajax({
url: "qry.php",
method: "POST",
data: {
check: chk
},
success: function(data) {
//alert(data);
window.location.reload();
}
});
});
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="chk" id="chk" value="1" />
<button type="button" name="" id="submit">TEST</button>
&#13;
您会看到我插入数据的方式与您的方式略有不同。我使用mysqli_
准备好的语句,这使得SQL注入很难做到。
$query = $connect -> prepare("INSERT INTO test(checked) VALUES (?)";
$query -> bind_param("i", $_REQUEST['check']);
if ($query -> execute()) {
echo "Zahtev je uspešno poslat!";
} else {
echo "Error: " . $query . "<br>" . $connect->error;
}
jsFiddle如果你想测试它。