用php检查查询行数

时间:2015-12-22 06:56:17

标签: php mysql pdo insert-update

我在PHP中非常环保。我需要在服务器端创建一个小服务,它将获取数据,转换它并将其填充到MySQL数据库中。

到目前为止,一切都很好。我设法创建PHP脚本来更新我的数据库中的现有行。

我在检查时遇到困难如果需要更新或添加行。你能帮帮我吗?

$servername = "localhost";
$username = "almazini";
$password = "3334444";
$dbname = "almazini";

$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

然后我通过我的数组循环...并执行SQL查询:

$sql = "UPDATE MyTargetTable SET SRate = $sr, BRate = $br WHERE Name='$name' AND SName = '$surname' ";
$stmt = $conn->prepare($sql);
$stmt->execute();

如何检查MyTargetTable中是否有一行我应该更新?如果没有这样的行 - 我想触发另一个查询来插入新行。

2 个答案:

答案 0 :(得分:2)

您可以在MySQL表本身上设置UNIQUE约束,以禁止重复值。从mysql连接控制台运行以下命令:

ALTER TABLE MyTargetTable
ADD UNIQUE INDEX FullName (Name, SName);

接下来,使用INSERT ... ON DUPLICATE KEY UPDATE查询:

$sql = "INSERT INTO MyTargetTable VALUES (what, ever, values, here)
ON DUPLICATE KEY UPDATE SRate = :sr, BRate = :br";

然后再绑定变量$sr$br,如examples here所示。

答案 1 :(得分:0)

您应首先通过在查询中传递参数来检查数据库,并且返回的计数是否大于0,否则插入新行。

算法就像这样

$count= "SELECT count(*) as count FROM MyTargetTable WHERE Name='$name' AND SName = '$surname'" ;

if(count > 0)
$sql = // Your Update Query
else
$sql = //your insert query

希望这有帮助