【问题标题】:Error with Primary Key(auto-increment int) Calling stored procedure in php主键错误(自动增量 int)在 php 中调用存储过程
【发布时间】:2019-03-09 10:16:38
【问题描述】:

// STORED PROCEDURE NAME: insertName, _id 是一个自动增量

try { 

        $sql = "CALL insertName(:_id, :_name)";
        $res = $pdo->prepare($sql);
        $res -> bindValue(":_id","NULL");
        $res -> bindValue(":_name",$name);
        $res->execute(); 
        $res->setFetchMode(PDO::FETCH_ASSOC);
} catch( PDOException $e ) {

        die( "ERROR ..." .$e->getMessage());
}

//如果我尝试直接插入一个数字,一切正常

try {  
        $sql = "CALL insertName(:_id, :_name)";

        $res = $pdo->prepare($sql);
        $res -> bindValue(":_id",1);
        $res -> bindValue(":_name",$name);
        $res->execute(); 
        $res->setFetchMode(PDO::FETCH_ASSOC);
} catch( PDOException $e ) {

        die( "ERROR ..." .$e->getMessage());
}

//即使我不使用存储过程尝试这个也可以

try {  
        $sql = 'INSERT INTO (id,name) VALUES (NULL,"'.$name.'" )';
        $res = $pdo->prepare($sql);
        $res->execute(); 
} catch( PDOException $e ) {

        die( "ERROR ..." .$e->getMessage());
}

【问题讨论】:

  • "NULL" 是字符串而不是 mysql NULL
  • 我尝试使用没有“”的 NULL 并且不要给我错误。问题是没有将结果插入数据库。当我在 NULL 位置使用数字时,它会起作用

标签: php mysql sql pdo


【解决方案1】:

只插入名称值,因为id是自动递增的,它会自己取值

【讨论】:

    【解决方案2】:

    您应该将变量设置为NULL 作为字符串,然后将其传递给bindValue

    try { 
            $id = "NULL"
            $sql = "CALL insertName(:_id, :_name)";
            $res = $pdo->prepare($sql);
            $res -> bindValue(":_id", $id);
    

    您必须确定,您可以将 NULL 保存为该列的值!

    【讨论】:

      【解决方案3】:
      //I changed the stored procedure
      

      开始交易;

      分隔符 |

      创建过程 insertName(_name)

      BEGIN

      //operations

      INSERT INTO TABLE VALUES (NULL,_name);
      

      结束;

      |分隔符;

      提交;

      //and then i call insertName(_name)
      

      【讨论】:

        猜你喜欢
        • 2018-10-02
        • 1970-01-01
        • 1970-01-01
        • 2015-10-24
        • 2020-06-22
        • 1970-01-01
        • 2017-07-20
        • 2023-02-23
        • 2013-07-11
        相关资源
        最近更新 更多