Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP没有';t使用正确的sql语句执行函数_Php_Sql_Database_Function - Fatal编程技术网

PHP没有';t使用正确的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"

我会把我的代码放在下面。我基本上检查数据库中的值,如果它是1或0,我想将其更改为相反的值(因此,如果1将其更改为0,如果0将其更改为1)。 如果我在不使用函数的情况下执行一条SQL语句(但它只以一种方式工作一次),它就可以工作。但是如果我想根据当前的值来执行特定的函数,它似乎不起作用。你知道我做错了什么吗

<?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();