Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在数据库中选择要更新的特定行_Php_Database - Fatal编程技术网

Php 在数据库中选择要更新的特定行

Php 在数据库中选择要更新的特定行,php,database,Php,Database,我想知道如何从数据库中选择某些行,我需要为每一行自动执行此操作,因此它是独立的,但我不能通过ID执行此操作,是否有某种方法可以选择某一行进行更新? 是这样的吗? 这当然缺少执行和连接,但这些部分是我的问题所在 $actual_quote = (empty($_GET['actual_quote'])) ? : $_GET['actual_quote'] ; $update1 = $db->prepare("UPDATE data SET dislikes = :dislikes WHER

我想知道如何从数据库中选择某些行,我需要为每一行自动执行此操作,因此它是独立的,但我不能通过ID执行此操作,是否有某种方法可以选择某一行进行更新? 是这样的吗? 这当然缺少执行和连接,但这些部分是我的问题所在

$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注入是开放的。