【问题标题】:SQL statement not deleting in PHPSQL 语句未在 PHP 中删除
【发布时间】:2013-03-05 18:28:34
【问题描述】:
echo $_POST['IDnum'];
$result = pg_prepare($conn, "city_delete",
    "DELETE FROM lab5.city WHERE lab5.city.id = $1");
$result = pg_execute($conn, "city_delete", array($_POST['IDnum']));

这会显示要删除的行的正确 ID 号,并将在 PSQL 中将其删除,但在 PHP 中实现时不会删除?有什么想法吗?

【问题讨论】:

  • 嗯...关心实际向我们展示代码吗?
  • 您是否从 mysql 命令行尝试过?或者像 phpmyadmin 这样的工具?你得到什么错误?你确认你的查询是正确的吗?
  • 不看代码就不知道了。
  • 抱歉,现在应该有代码了。我在命令行中运行它,当我在 ID 中硬编码时它删除了正确的行,但是当我使用 post 时它不会删除它,即使 post 变量是相同的数字
  • 为什么array()包含在最后的语句中?

标签: php sql postgresql


【解决方案1】:

试试这个:

$result = pg_prepare($conn, "city_delete",
'DELETE FROM lab5.city WHERE lab5.city.id = $1');

您使用的双引号使 $1 成为 PHP 变量而不是字符串。

在此处查看 pg_prepare 的示例:http://php.net/manual/en/function.pg-prepare.php

【讨论】:

  • pg_prepare() 期望参数 1 是资源,给定 null。这是我用单引号运行时的错误。
  • 第一个参数是 $conn,它表示缺少数据库连接(提到的资源)。查看此以获得更多信息:php.net/manual/en/function.pg-connect.php
  • 如果将来有人读到这个答案:PHP 中的变量名必须以 [a-zA-Z_] 开头(以及从 0x7f 到 0xff 的字节,尽管在这里不相关)。这种情况下双引号不会引起变量插值。
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
相关资源
最近更新 更多