我遇到了一点麻烦,需要编写一些代码来查找平台名称的重复项。以后也可以使用它来查找唯一的ID。

因此,例如,如果Xbox上有一个名为“ Apple”的服务器,而您尝试在同一平台上插入名称为“ Apple”的记录,它将拒绝该记录。但是,允许使用具有相同名称的另一个平台,例如带有PS3的“ Apple”。

我已经尝试过提出想法并寻找答案,但是对于检查重复项的最佳方式,我还是一无所知。

到目前为止,这就是我所拥有的:

$nameDuplicate_sql = $db->prepare("SELECT * FROM `servers` WHERE name=':name' AND platform=':platform'");
$nameDuplicate_sql->bindValue(':name', $name);
$nameDuplicate_sql->bindValue(':platform', $platform);
$nameDuplicate_sql->execute();


我尝试了很多不同的解决方案,其中一些来自这里,其他来自PHP手册,等等。

我试图坚持使用PDO,但是,在这种情况下,我不知道该转向哪里。如果这是在mysql_ *中,我可能只能使用mysql_affected_rows,但是对于PDO,我却一无所知。 rowCount看起来很有希望,但由于它既不是INSERT,UPDATE或DELETE语句,因此始终返回0。

哦,我已经在phpMyAdmin中尝试了SQL语句,它可以工作;我使用简单的名称/平台进行了尝试,并正确找到了行。

如果有人可以在这里帮助我,我将不胜感激。

最佳答案

对于大多数数据库,PDOStatement :: rowCount()不会返回
  SELECT语句影响的行数。
      相反,请使用PDO :: query()发出带有与预期SELECT语句相同的谓词的SELECT COUNT(*)语句,然后使用
  PDOStatement :: fetchColumn()检索将要行数
  被退回。
      然后,您的应用程序可以执行正确的操作。

10-05 20:32
查看更多