Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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_Mysql - Fatal编程技术网

Php 存在重复项时仅删除一行

Php 存在重复项时仅删除一行,php,mysql,Php,Mysql,关于这条线 database::query("DELETE FROM bo WHERE name='{$this->_protected_arr[a1]}' AND email='$_SESSION[email]'"); 如何更新它,使其仅删除一行而不是所有行 另外,语法看起来不合适,有没有办法不使用{} 此外,如果关联数组中没有撇号,PHP通常会调用警告,但在这种情况下它不会拾取它。所以这似乎也是错误的 这实际上是三个问题 如何更新它,使其仅删除一行而不是所有行 在查询末尾使用LI

关于这条线

  database::query("DELETE FROM bo WHERE name='{$this->_protected_arr[a1]}' AND email='$_SESSION[email]'");
如何更新它,使其仅删除一行而不是所有行

另外,语法看起来不合适,有没有办法不使用{}

此外,如果关联数组中没有撇号,PHP通常会调用警告,但在这种情况下它不会拾取它。所以这似乎也是错误的

这实际上是三个问题

如何更新它,使其仅删除一行而不是所有行

在查询末尾使用
LIMIT 1
子句

语法看起来不对劲

没错。PHP称之为字符串中变量解析的“复杂(卷曲)语法”:

如果您愿意,当然可以在那里使用字符串连接

如何更新它,使其仅删除一行而不是所有行

在查询末尾使用
LIMIT 1
子句

语法看起来不对劲

没错。PHP称之为字符串中变量解析的“复杂(卷曲)语法”:


如果愿意,您当然可以在那里使用字符串连接。

您应该使用
限制1
。问题是在
LIMIT 1
selection:)中捕获哪一行

最好的情况是,您的数据库::查询支持占位符

关于卷曲的brakets,只需在数组键中添加撇号即可

   database::query("DELETE FROM bo WHERE name='{$this->_protected_arr['a1']}' AND email='{$_SESSION['email']}'");

如果不想使用卷曲括号,只需连接字符串,如
“DELETE…”.$this->property.“和…”

您应该使用
限制1
。问题是在
LIMIT 1
selection:)中捕获哪一行

最好的情况是,您的数据库::查询支持占位符

关于卷曲的brakets,只需在数组键中添加撇号即可

   database::query("DELETE FROM bo WHERE name='{$this->_protected_arr['a1']}' AND email='{$_SESSION['email']}'");

如果不想使用卷曲括号,只需连接字符串,如
“DELETE…”.$this->property.“和…”

正如其他人所建议的,在查询末尾添加限制1将使查询只删除一行。然而,考虑到您在这里使用的是静态类,我猜您已经足够了解为什么数据库中的所有内容都应该有自己的唯一标识符,我很好奇为什么您不将其作为确定删除内容的标准的一部分?或者至少可以进行一些其他比较,比如运行select语句,提取所有行,然后在结果上循环,将它们设置为多维数组,然后可以比较多行的列值,并使用该比较来决定保留哪一行。如果您得到多个条目,可以考虑使用jquery隐藏按钮或在单击按钮后立即将其灰显,以防止用户双击。只是一些想法…

正如其他人所建议的,在查询末尾添加一个限制1将使其仅删除一行。然而,考虑到您在这里使用的是静态类,我猜您已经足够了解为什么数据库中的所有内容都应该有自己的唯一标识符,我很好奇为什么您不将其作为确定删除内容的标准的一部分?或者至少可以进行一些其他比较,比如运行select语句,提取所有行,然后在结果上循环,将它们设置为多维数组,然后可以比较多行的列值,并使用该比较来决定保留哪一行。如果您得到多个条目,可以考虑使用jquery隐藏按钮或在单击按钮后立即将其灰显,以防止用户双击。只是一些想法…

您希望删除哪一行?Pro提示:始终在SQL语句中转义您的数据,即使它们位于您合理确定包含安全数据的变量中(情况会发生变化)。更好的是,完全放弃字符串连接,改用参数化查询(PDO)。
“{$this->\u protected\u arr[a1]}”是错误的(将发布
使用未定义常量a1
。正确的是:
“{$this->\u protected\u arr['a1']}”
它适用于我的PHP版本。我直接从工作代码复制了它,您希望它删除哪一行?Pro提示:始终在SQL语句中转义数据,即使它们在您合理确定包含安全数据的变量中(情况会发生变化)。更好的是,完全放弃字符串连接,改用参数化查询(PDO)。
“{$this->\u protected\u arr[a1]}”
是错误的(将发布
使用未定义常量a1
。正确的是:
“{$this->\u protected\u arr['a1']}”
它在我的PHP版本上工作。我直接从工作代码复制了它