php - 可以将循环用于错误捕获?

  显示原文与译文双语对照的内容
0 0

我在向MySQL表插入记录时使用try捕捉捕捉算法 when 。 我的脚本语言是 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;

我如何写上面的代码,而不是尝试捕捉,我使用循环。 如果有错误,请重试。 如果没有错误,则中断循环。

有"而 true"但我不知道"尝试捕获"是否应该是 true 循环的一部分。

这里的目的是保存 UDID - 惟一的值是在MYSQL中设置的。 如果我生成相同的值,我可能会得到错误。 所以为什么循环。

时间: 原作者:

0 0

我觉得你错误的方式。 我试图查看该值是否首先存在,而不是尝试插入一个可以能不是唯一的值。 你可以执行查询,例如


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

这只是我的头部,它可以被重构甚至更好。 你也可以利用你的数据库来为你选择。 你可以运行一个查询来获取表中的所有内容,并运行in_array检查值是否存在,然后你只能打击数据库两次。 无论如何,你真的不想尝试用这样的方法来欺骗你。

0 0

mysql有一个类似于这样的功能,你将向insert语句示例添加一个"重复密钥更新":


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

有关更多信息,请参见这里链接: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

...