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
我在将记录插入 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