Php 在数据库中选择要更新的特定行
我想知道如何从数据库中选择某些行,我需要为每一行自动执行此操作,因此它是独立的,但我不能通过ID执行此操作,是否有某种方法可以选择某一行进行更新? 是这样的吗? 这当然缺少执行和连接,但这些部分是我的问题所在Php 在数据库中选择要更新的特定行,php,database,Php,Database,我想知道如何从数据库中选择某些行,我需要为每一行自动执行此操作,因此它是独立的,但我不能通过ID执行此操作,是否有某种方法可以选择某一行进行更新? 是这样的吗? 这当然缺少执行和连接,但这些部分是我的问题所在 $actual_quote = (empty($_GET['actual_quote'])) ? : $_GET['actual_quote'] ; $update1 = $db->prepare("UPDATE data SET dislikes = :dislikes WHER
$actual_quote = (empty($_GET['actual_quote'])) ? : $_GET['actual_quote'] ;
$update1 = $db->prepare("UPDATE data SET dislikes = :dislikes WHERE actual_quote = $actual_quote");
在这里;这是数据库的图片
那么,我该如何选择一行呢?我将在一段时间的循环中这样做,这样我就需要它一次又一次地发生,所以它不可能是唯一的,我很困惑,有人能给我一个建议吗?你走对了 SQL的更新将一个或多个字段设置为给定值,并且它将知道使用WHERE语句用新值更新哪些行 您的代码看起来不错,但我有一个改进:
$actual_quote = (empty($_GET['actual_quote'])) ? : $_GET['actual_quote'] ;
$update1 = $db->prepare("UPDATE data SET dislikes = :dislikes WHERE actual_quote = :quote");
这并不是在SQL本身中引用$actual_quote,而是将其用作参数,就像您对:dislikes所做的那样。这样可以防止一些愚蠢的SQL注入。否则,这看起来很合理
请记住,如果多行的实际引用相同,则所有行都将更新为“不喜欢”的新值
附录:您应该能够使用限制1,以便只更新一行。。。限制1但这里最好使用唯一ID为什么不能使用它或确保报价是唯一的
限制1并不能很好地解决同一个报价在多个条目中的问题,因为它不能保证正确的条目会受到影响;它所能保证的只是只更改一行
tl;Dr:FixSQL注入,你的代码应该工作,但是考虑使用你唯一的ID,或者确保引用行对于每个条目都是唯一的。我不能理解你的问题,但是我可以告诉你这个查询对SQL注入是开放的。