使用php检查查询行数

使用php检查查询行数,php,mysql,pdo,insert-update,Php,Mysql,Pdo,Insert Update,我对PHP非常了解。我需要在服务器端创建一个小型服务,它将获取数据,转换数据并将其填充到MySQL数据库中 到目前为止一切都很好。我设法创建了PHP脚本来更新数据库中的现有行 我很难检查是否需要更新或添加行。你能帮我吗 $servername = "localhost"; $username = "almazini"; $password = "3334444"; $dbname = "almazini"; $conn = new PDO("mysql:host=$servername;dbn

我对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中是否有需要更新的行?如果没有这样的行-我想启动另一个查询以插入新行。

您应该首先通过在查询中传递参数从数据库中进行检查,如果返回的计数大于0而不是update,则插入新行

算法是这样的

$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

希望这有帮助

您可以在MySQL表本身上设置一个
唯一的
约束,以避免重复值。从mysql连接控制台运行以下操作:

ALTER TABLE MyTargetTable
ADD UNIQUE INDEX FullName (Name, SName);
接下来,使用
INSERT。。。在重复密钥更新时
查询:

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

然后在后面绑定变量
$sr
$br
,如所示。

非常优雅的解决方案,完全符合我的需要!谢谢!