【问题标题】:How can i insert only into one column without getting null to others我怎样才能只插入一列而不使其他列为空
【发布时间】:2014-08-06 14:01:41
【问题描述】:

我需要插入数据库列而不覆盖其他列的值。这是我的 php 代码,我检查每一列是否必须用“si”覆盖或根本没有值。事情是只有最后一列的值为“si”,所有其他列的值为“null”。我如何只插入一列而不将 null 或 '' 传递给其他列!

if($canSend){

            $queryUser="CREATE TABLE `$email` ( lun8semanauno VARCHAR(30), 
                            lun10semanauno VARCHAR(30), lun16semanauno VARCHAR(30),lun18semanauno VARCHAR(30), lun20semanauno VARCHAR(30));";
            $queryu=mysql_query($queryUser,$db); 
 }

//Ahora sumo uno al cupo si es que esta todo bien de arriba:    
    if($canSend && $horarios == "Lunes 8:30hs-Clase grupal"){
            $nuevocupolun8=$info['cuposLun8']+1;
            $queryRestar="UPDATE  `cupos` SET  `cuposLun8`='$nuevocupolun8'   WHERE  `cupos`.`cuposLun8` =  '$cupolun8';";
            $restar=mysql_query($queryRestar,$db);

            $queryAdd="INSERT INTO `lahiguera_hor`.`$email` (`lun8semanauno`) VALUES ('si');";
            $querya=mysql_query($queryAdd,$db);
        }
    if($canSend && $horarios == "Lunes 10hs-Meditacion"){
            $nuevocupolun10=$info['cuposLun10']+1;
            $queryRestar="UPDATE  `cupos` SET  `cuposLun10`='$nuevocupolun10'   WHERE  `cupos`.`cuposLun10` =  '$cupolun10';";
            $restar=mysql_query($queryRestar,$db);

            $queryAdd="$queryAdd="INSERT INTO `lahiguera_hor`.`$email` (`lun10semanauno`) VALUES ('si');";
            $querya=mysql_query($queryAdd,$db);
        }
    if($canSend && $horarios == "Lunes 16hs-Futuras mamas"){
            $nuevocupolun16=$info['cuposLun16']+1;
            $queryRestar="UPDATE  `cupos` SET  `cuposLun16`='$nuevocupolun16'   WHERE  `cupos`.`cuposLun16` =  '$cupolun16';";
            $restar=mysql_query($queryRestar,$db);

            $queryAdd="INSERT INTO `lahiguera_hor`.`$email` (`lun16semanauno`) VALUES ('si');";
            $querya=mysql_query($queryAdd,$db);
        }       
    if($canSend && $horarios == "Lunes 18hs-Clase grupal"){
            $nuevocupolun18=$info['cuposLun18']+1;
            $queryRestar="UPDATE  `cupos` SET  `cuposLun18`='$nuevocupolun18'   WHERE  `cupos`.`cuposLun18` =  '$cupolun18';";
            $restar=mysql_query($queryRestar,$db);

            $queryAdd="INSERT INTO `lahiguera_hor`.`$email` (`lun18semanauno`) VALUES ('si');";
            $querya=mysql_query($queryAdd,$db);
        }           
    if($canSend && $horarios == "Lunes 20hs-clase grupal"){
            $nuevocupolun18=$info['cuposLun20']+1;
            $queryRestar="UPDATE  `cupos` SET  `cuposLun20`='$nuevocupolun20'   WHERE  `cupos`.`cuposLun20` =  '$cupolun20';";
            $restar=mysql_query($queryRestar,$db);

            $queryAdd="INSERT INTO `lahiguera_hor`.`$email` (`lun20semanauno`) VALUES ('si');";
            $querya=mysql_query($queryAdd,$db);
        }

【问题讨论】:

  • 你希望别人有什么,不同于 null ?!
  • 如果您是INSERTing,那么另一列将没有值。你确定你不应该看UPDATE吗?
  • $queryAdd="$queryAdd="INSERT INTO lahiguera_hor.$email` (lun10semanauno) VALUES ('si');";` 这是完全错误的......你的报价有冲突......跨度>
  • UPDATE 将更改与条件匹配的现有行中的值,其中 INSERT 将创建一个具有指定值的新行(以及所有其他字段的默认值,NULL 除非您在创建表时另有指定/场地)。如果您想要在一行中设置值,请使用一个 INSERT 和一系列 UPDATE。如果需要多行,则需要在 INSERT 语句中为所有字段指定值(否则将使用默认值)。您可以使用 INSERT.... SELECT... 表示法而不是 INSERT... VALUES(...) 使用来自其他行的数据自动填充它们。
  • @ChrisFlynn 这基本上是一个答案!

标签: php mysql sql


【解决方案1】:

如果您将新行插入数据库并且您没有为每列指定值,则将设置默认值,如果该列允许,则设置为 NULL,否则数据库将返回错误并且不会将该行写入表中。

对于 INT 列设置默认值 0,对于 VARCHAR 列,您可以指定 '' 空字符串作为默认值。一切都取决于您的数据库设计,以及您希望如何使用它。如果您不希望列中的任何内容,您可以允许它为 NULL,并预设默认值 NULL。使用 NULL 作为空值是一个好习惯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多