【问题标题】:ERROR: missing FROM-clause entry错误:缺少 FROM 子句条目
【发布时间】:2015-11-07 22:30:56
【问题描述】:

我是 php 和 postgres sql 的新手。 我有这个问题:“pg_query(): Query failed: ERROR: missing FROM-clause entry for table "manteau ^

$adresse=pg_escape_string($_POST['mail_user']);
if(isset($_POST['mail_user']))
{ 
    $query="INSERT INTO newusers2 (email) VALUES ($adresse)";
    pg_query($con,$query);
}

使用 mail_user = 我的地址电子邮件 manteau.b... 我的表 (newusers2) 非常简单,只有一列 (email)。

有人可以帮我查询吗?

谢谢

【问题讨论】:

  • 试试'$adresse'而不是$adresse
  • 当一个值是字符串时,你需要使用引号'$adresse',而当一个值是数字时,你不需要引号只是$num
  • 非常感谢。现在可以了!
  • 我们不应该删除mysql标签吗?
  • @Md.SahadatHossain 非常糟糕的建议。 E特别针对新用户,将他们引导至参数化语句(“准备语句”)。

标签: php mysql postgresql


【解决方案1】:

除了由于缺少引用代码而导致不正确之外,您的代码也非常不安全。

$query="INSERT INTO newusers2 (email) VALUES ($adresse)";
pg_query($con,$query);

想象一下,如果有人提交');DELETE FROM newusers2;-- 作为他们的地址?哎呀,你的用户表到了。

详情请参阅the PHP documentation on SQL injectionthis site

使用pg_query_params 解决此问题。很简单:

$query='INSERT INTO newusers2 (email) VALUES ($1)';
pg_query($con,$query,array($adresse));

(请注意,PHP 中的新代码确实应该使用 PDO)。

【讨论】:

    【解决方案2】:

    将值 $adresse 放在引号内:

    $query="INSERT INTO newusers2 (email) VALUES ('$adresse')";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 2019-02-17
      • 2016-03-24
      • 1970-01-01
      • 2020-04-30
      相关资源
      最近更新 更多