// 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());
}
仅插入名称值,因为id是自动增量,它将自己获取值
您应该使用NULL
将变量设置为字符串,然后将其传递给bindValue
:
try {
$id = "NULL"
$sql = "CALL insertName(:_id, :_name)";
$res = $pdo->prepare($sql);
$res -> bindValue(":_id", $id);
而且你必须确保,你可以将NULL保存为该列的值!
//I changed the stored procedure
开始交易;
DELIMITER |
CREATE PROCEDURE insertName(_name)
BEGIN
//operations
INSERT INTO TABLE VALUES (NULL,_name);
结束;
| DELIMITER;
承诺;
//and then i call insertName(_name)