PHP没有';t使用正确的sql语句执行函数
我会把我的代码放在下面。我基本上检查数据库中的值,如果它是1或0,我想将其更改为相反的值(因此,如果1将其更改为0,如果0将其更改为1)。 如果我在不使用函数的情况下执行一条SQL语句(但它只以一种方式工作一次),它就可以工作。但是如果我想根据当前的值来执行特定的函数,它似乎不起作用。你知道我做错了什么吗PHP没有';t使用正确的sql语句执行函数,php,sql,database,function,Php,Sql,Database,Function,我会把我的代码放在下面。我基本上检查数据库中的值,如果它是1或0,我想将其更改为相反的值(因此,如果1将其更改为0,如果0将其更改为1)。 如果我在不使用函数的情况下执行一条SQL语句(但它只以一种方式工作一次),它就可以工作。但是如果我想根据当前的值来执行特定的函数,它似乎不起作用。你知道我做错了什么吗 <?php $date_id = $_POST['dateID']; $con = mysqli_connect("localhost","root","","secret_name"
<?php
$date_id = $_POST['dateID'];
$con = mysqli_connect("localhost","root","","secret_name");
$sql = "SELECT * FROM date_list WHERE date_id = ".$dateID;
$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_assoc($result)){
$occupied = $row['occupied'];
if($occupied == 1){
decross_entry();
} elseif( $occupied == 0){
cross_entry();
}else{
echo "Error"
}
}
function decross_entry(){
$dateID = $_POST['dateID'];
$con_2 = mysqli_connect("localhost","root","","secret_name");
$sql_edit = "UPDATE date_list SET occupied= '0' WHERE date_id = ".$dateID;
if($con_2 -> connect_errno){
echo "Failed to connect to database!" . $con_2->connect_error;
}
if ($con_2 -> query($sql_edit) === TRUE)
{
echo "saved!";
} else {
echo "error: " .$sql_edit."<br>".$con_2->error;
}
}
function cross_entry(){
$dateID = $_POST['dateID'];
$con_2 = mysqli_connect("localhost","root","","secret_name");
$sql_edit = "UPDATE date_list SET occupied= '1' WHERE date_id = ".$dateID;
if($con_2 -> connect_errno){
echo "Failed to connect to database!" . $con_2->connect_error;
}
if ($con_2 -> query($sql_edit) === TRUE)
{
echo "saved!";
} else {
echo "error: " .$sql_edit."<br>".$con_2->error;
}
}
?>
如果占用的
的唯一可能值是0
和1
,则您可以在一次查询中执行所需操作,而无需首先查找占用的
值:
UPDATE date_list
SET occupied = 1 - occupied
WHERE date_id = ?
在PHP中,使用准备好的查询来避免:
当第二次调用select查询时,默认占用的$row['ACCOUNTED']@AA中的值始终为零。只有在调用函数“cross_entry”时,它才会变为1。这就是你想知道的吗?那么是不是刚开始调用cross_entry并更新为1?@roubs3019。学习使用参数!您可以添加并在(0,1)
中占用,以更准确地反映OP的代码。
$date_id = $_POST['dateID'];
$con = mysqli_connect("localhost","root","","secret_name");
$sql = "UPDATE date_list SET occupied = 1 - occupied WHERE date_id = ?";
$stmt = $con->prepare($sql);
$stmt->bind_param('i', $date_id); // use 's' if $date_id is not an integer
$stmt->execute();