While 循环可以用来捕捉错误吗?

Can While Loop be used for Error Catching?

我在将记录插入 MySQL table 时使用了 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 = 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。你可以 运行 一个查询来从你的 table 中获取所有的 udid 并且只是 运行 in_array 来检查值是否存在,然后你只是点击你的数据库两次。无论如何,您真的不想尝试滥用这样的 try catch。

mysql 有一个这样的函数,你可以在你的插入语句中添加一个 "ON DUPLICATE KEY UPDATE" 示例:

INSERT INTO table(x, y, z) values (?, ?, ?) ON DUPLICATE KEY UPDATE x=?;

另请参阅此 link 了解更多信息: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html