Php While循环可以用于错误捕获吗?
我在将记录插入MySQL表时使用try-catch算法。我的脚本语言是PHPPhp While循环可以用于错误捕获吗?,php,mysql,error-handling,while-loop,Php,Mysql,Error Handling,While Loop,我在将记录插入MySQL表时使用try-catch算法。我的脚本语言是PHP try { /* UDID generation algo goes here. */ $sql = "INSERT INTO tablex (udid, name) VALUES ('$udid', 'Doe')"; $conn->exec($sql); echo "New record created"; } catch(PDOException $e) { echo "Error" } $conn
try {
/*
UDID generation algo goes here.
*/
$sql = "INSERT INTO tablex (udid, name)
VALUES ('$udid', 'Doe')";
$conn->exec($sql);
echo "New record created";
}
catch(PDOException $e)
{
echo "Error"
}
$conn = null;
如何重新编写上面的代码,以便使用循环而不是try-catch。如果出现错误,请重试。如果没有错误,则中断循环
虽然有“While-True”,但我不知道“Try-Catch”是否应该是While-True循环的一部分
这样做的目的是保存一个UDID——唯一的值是在MYSQL中设置的。如果我生成相同的值,我可能会得到错误。因此,为什么要循环。我觉得你走错了方向。我不会尝试插入一个可能不唯一的值,而是首先尝试查看该值是否存在。您可以执行以下查询:
do {
//$udid = create uuid
$query = "SELECT COUNT(*) FROM tablex WHERE udid = :udid";
$statement = $pdo->prepare($query);
$statement->bindValue("udid", $udid);
$result = $statement->fetchAll();
} while ($result["count"] === 1);
//insert row into table
这只是我的想法,它可以重构得更好。如果愿意,还可以利用数据库为您生成UDID。您可以运行一个查询,从表中获取所有udid,然后在_数组中运行以检查值是否存在,然后您只需访问数据库两次。不管怎么说,你真的不想滥用这样的一个尝试捕捉 mysql有这样一个函数,您可以在insert语句中添加一个“ON replice KEY UPDATE” 例如: 有关更多信息,请参见此链接:
我不使用PHP,但这是一个非常有趣的问题!异常不应用于控制流。
INSERT INTO table(x, y, z) values (?, ?, ?) ON DUPLICATE KEY UPDATE x=?;