Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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 如果需要ro,请检查PDOSMT->;execute()返回,是否在if语句中再次调用它?_Php_Mysql - Fatal编程技术网

Php 如果需要ro,请检查PDOSMT->;execute()返回,是否在if语句中再次调用它?

Php 如果需要ro,请检查PDOSMT->;execute()返回,是否在if语句中再次调用它?,php,mysql,Php,Mysql,如果我有这样的基本插入查询: $stmt = $db->prepare("INSERT INTO table (row) VALUES (?)"); $stmt->bindParam(1, $value); 我可以在这样的if语句中调用execute来检查插入是否成功吗 $stmt = $db->prepare("INSERT INTO table (row) VALUES (?)"); $stmt->bindParam(1, $value); if ($stmt-&g

如果我有这样的基本插入查询:

$stmt = $db->prepare("INSERT INTO table (row) VALUES (?)");
$stmt->bindParam(1, $value);
我可以在这样的if语句中调用execute来检查插入是否成功吗

$stmt = $db->prepare("INSERT INTO table (row) VALUES (?)");
$stmt->bindParam(1, $value);
if ($stmt->execute()){echo "success"}
或者我必须先调用它,然后在if语句中再次调用它吗

$stmt = $db->prepare("INSERT INTO table (row) VALUES (?)");
$stmt->bindParam(1, $value);
$stmt->execute()
if ($stmt->execute()){echo "success"}
调用$stmt->execute()两次将执行两次

最好使用try-and-catch,因为prepare()和bindParam()也可能失败:

try {
    $stmt = $db->prepare("INSERT INTO table (row) VALUES (?)");
    $stmt->bindParam(1, $value);
    $stmt->execute();
    echo 'Success';
} catch (PDOException $e) {
    echo 'Error: '.$e->getMessage();
}

您可以使用第二个代码段执行两次。你的第一个是正确的。为什么不试试看会发生什么?但是Qirel是对的,第二个将使查询运行两次……您只需测试第二次尝试的成功。第一个例子是如何做。请记住,prepare()和bindParam()方法也可能失败。