Php 在表(用户_2)中插入用户_1不为空的值

Php 在表(用户_2)中插入用户_1不为空的值,php,mysql,sql,Php,Mysql,Sql,发布请求后,我需要: 检查表上是否存在u_1,以及它是否在表中,插入u_2,其中u_1不为空 如果u_1不存在,则插入u_1 这是我的PHP代码 创建过程插入值插入值插入整型或文本?设置正确的数据类型 开始 如果存在,请选择NULL 从桌子上 其中u_2为空 更新测试 将u_2=值_设置为插入 其中u_2为空; 其他的 插入到表中 将u_1=值_设置为插入; 如果结束; 终止 然后不要忘记添加所需的错误检查 $sql=调用将值插入; $stmt=$conn->prepare$sql; $stmt

发布请求后,我需要:

检查表上是否存在u_1,以及它是否在表中,插入u_2,其中u_1不为空 如果u_1不存在,则插入u_1 这是我的PHP代码

创建过程插入值插入值插入整型或文本?设置正确的数据类型 开始 如果存在,请选择NULL 从桌子上 其中u_2为空 更新测试 将u_2=值_设置为插入 其中u_2为空; 其他的 插入到表中 将u_1=值_设置为插入; 如果结束; 终止 然后不要忘记添加所需的错误检查

$sql=调用将值插入; $stmt=$conn->prepare$sql; $stmt->bind_params,$user; $stmt->execute;
我更改了sql语法,现在它可以像我预期的那样工作了

if ( isset( $_POST["cards"],$_POST["user"],$_POST["cardvalues"],$_POST["tablekey"] ) ) {
    
        $user = $_POST["user"];
        $cards = $_POST["cards"];
        $cardvalues = $_POST["cardvalues"];
        $tablekey = $_POST["tablekey"];
    
        $checkIfNull = "SELECT table_id FROM tables WHERE u_1 IS NOT NULL AND u_2 = '' LIMIT 1";
        $insertIntoU_2 = "UPDATE tables SET u_2 = ? WHERE table_id = ?";
        $insertIntoU_1 = "INSERT INTO tables (u_1,all_cards,card_value,table_key) VALUES (?,?,?,?)";
    
        if ( $stmt = $conn->prepare( $checkIfNull ) ) {
            if ( $stmt->execute() ) {
                $result = $stmt->get_result();
                $tableIdArray = array();
                $i = 0;
                if ( $result->num_rows > 0 ) {
                    while ( $row = $result->fetch_assoc() ) {
                        $tableIdArray["table_id"][$i] = $row["table_id"];
                        $i++;
                    } 
                    $tableID = $tableIdArray["table_id"][0];
                    if ( $stmt = $conn->prepare( $insertIntoU_2 ) ) {
                        $stmt->bind_param( "ss",$user,$tableID );
                        $stmt->execute();
                    }
                } else {
                    if ( $stmt = $conn->prepare( $insertIntoU_1 ) ) {
                        $stmt->bind_param( "ssss",$user,$cards,$cardvalues,$tablekey );
                        $stmt->execute();
                    }
                }
            }
        }   
        
    }

插入值不允许WHERE子句。使用插入。。改为选择。PS.你想从哪一行检查什么u_1?@Akina我需要在u_1不为空的行中插入u_2,如果u_1为空,只需将u_1作为新行插入。我需要在u_1不为空的行中插入u_2。如果你只是要插入此行,行中的某些列可能不为空?也许你的意思是,此列中具有此值的另一行已经存在于表中?我只需要,如果u_1不是空的,插入u_2,就像这样,如果u_1是空的,插入u_1,就像我只需要,如果u_1不是空的,它一定不是空的?在哪一排?您的任务是:如果不存在具有指定u_1值的行,则使用空u_2插入该行,否则更新该行并将其u_2设置为指定值?Anycase show add into question文本表将表脚本创建为格式化文本,而不是图像。感谢您的时间,但我编写的代码并没有对我的代码结构进行太多更改。
if ( isset( $_POST["cards"],$_POST["user"],$_POST["cardvalues"],$_POST["tablekey"] ) ) {
    
        $user = $_POST["user"];
        $cards = $_POST["cards"];
        $cardvalues = $_POST["cardvalues"];
        $tablekey = $_POST["tablekey"];
    
        $checkIfNull = "SELECT table_id FROM tables WHERE u_1 IS NOT NULL AND u_2 = '' LIMIT 1";
        $insertIntoU_2 = "UPDATE tables SET u_2 = ? WHERE table_id = ?";
        $insertIntoU_1 = "INSERT INTO tables (u_1,all_cards,card_value,table_key) VALUES (?,?,?,?)";
    
        if ( $stmt = $conn->prepare( $checkIfNull ) ) {
            if ( $stmt->execute() ) {
                $result = $stmt->get_result();
                $tableIdArray = array();
                $i = 0;
                if ( $result->num_rows > 0 ) {
                    while ( $row = $result->fetch_assoc() ) {
                        $tableIdArray["table_id"][$i] = $row["table_id"];
                        $i++;
                    } 
                    $tableID = $tableIdArray["table_id"][0];
                    if ( $stmt = $conn->prepare( $insertIntoU_2 ) ) {
                        $stmt->bind_param( "ss",$user,$tableID );
                        $stmt->execute();
                    }
                } else {
                    if ( $stmt = $conn->prepare( $insertIntoU_1 ) ) {
                        $stmt->bind_param( "ssss",$user,$cards,$cardvalues,$tablekey );
                        $stmt->execute();
                    }
                }
            }
        }   
        
    }