【问题标题】:Wrong syntax for Mysql? [closed]Mysql 语法错误? [关闭]
【发布时间】:2013-12-17 19:47:57
【问题描述】:
$SQL="SELECT first_name FROM people WHERE fname = '$fname' INSERT INTO (first_name) VALUES (fname)";

这有什么问题吗?尝试将用户定义变量中的值插入到 mysql 表中

警告:mysql_num_rows() 期望参数 1 是资源,在第 44 行的 D:\wamp\www\Pxxxx\process.php 中给出的布尔值

这是错误

$fname 是用户定义的变量 first_name 是我要插入的列,它位于名为 people 的表中

【问题讨论】:

  • 如果您需要 2 个语句,请进行交易。
  • ;分隔两个语句
  • 您要插入什么?您是否尝试插入SELECT 的结果?你的意思是:INSERT INTO (first_name) SELECT first_name FROM people WHERE fname = '$fname'
  • @Floris:出于安全原因,您不能在一个 mysql_query 调用(或他使用的任何方法)中运行 2 个语句。
  • 从来不知道! @OP:目前还不清楚您要在这里完成什么。

标签: php mysql


【解决方案1】:

您的顺序颠倒了。您似乎正在寻找 INSERT .. SELECT 语法(请参阅此处的 MySQL 文档:http://dev.mysql.com/doc/refman/5.6/en/insert-select.html

INSERT INTO target_table (first_name)
SELECT fname
FROM people
WHERE fname = ?

从您的示例中不清楚您尝试向其中插入数据的表的名称是什么,所以我在这里将其列为target_table

【讨论】:

    【解决方案2】:

    您的 SQL 语句必须像这样重新排序:

    "INSERT  INTO people (fname) SELECT '$fname' FROM dual;"
    

    这将从伪表“dual”中选择 $fname 的值并将该值插入“people”。

    也许这样更合适:

    "INSERT INTO people (fname) VALUES ('$fname');"
    

    这个 sn-p 向您展示了一个简单的插入语句。

    注意:请查看 Wikipedia 上的 SQL 注入。您正在编写的代码对这些类型的攻击是开放的。如果您正在编写 PHP 代码,请查看 Prepared Statements 和 mysqli 以防止这些攻击。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 2012-11-05
      • 2013-03-13
      • 2013-09-07
      • 1970-01-01
      相关资源
      最近更新 更多