【问题标题】:SELECT id FROM table_name WHERE column = $variableSELECT id FROM table_name WHERE column = $variable
【发布时间】:2013-06-01 06:45:28
【问题描述】:

我正在尝试检索记录的 ID 号以用作其他地方的变量。我只想要在另一列中具有特定值的记录中的 id。这是我的代码:

$result = mysql_query("SELECT id FROM order WHERE orderNumber = '$orderNumber'") or die (mysql_error());
$id = $result;

当我测试时,我得到: SQL 语法;查看与您的 MySQL 服务器版本相对应的手册,了解在 'order WHERE orderNumber = '5b0ea3' 附近使用的正确语法

有什么想法吗?

【问题讨论】:

  • 这是您收到的实际查询和错误消息吗?
  • 提问时最好不要更改字段和变量名称
  • 不推荐使用 mysql_* 方法,我建议切换到 mysqli 或 PDO,并且在将 $variable 放入查询之前应该对其进行清理。如果在运行之前回显它,最终查询会是什么样子?
  • 这是包含所有信息的代码:$result = mysql_query("SELECT id FROM order WHERE orderNumber = '$orderNumber'") or die (mysql_error()); $id = $结果;和错误信息:SQL 语法;检查与您的 MySQL 服务器版本相对应的手册,以了解在 'order WHERE orderNumber = '5b0ea3' 附近使用的正确语法 抱歉
  • 没有看到您的实际列名和表名,我只能猜测您可能使用了MySQL reserved keyword 代替了table_name

标签: php select where


【解决方案1】:
SELECT id FROM order WHERE orderNumber = '$orderNumber'

ORDER 是 SQL 中的保留词;我建议您将表的名称更改为其他名称。

如果你真的不能,那么你可以用反引号转义列名和表名:

SELECT `id` FROM `order` WHERE `orderNumber` = '$orderNumber'

或者

SELECT `id` FROM `order` WHERE `orderNumber` = '".$orderNumber."'

还可以查看有关停止使用 mysqli_ 函数的 cmets - 它们不安全,已被弃用。

【讨论】:

    【解决方案2】:

    由于ORDER 是保留字,您必须在sql 查询中使用反引号。然后使用mysql_fetch_assoc 来获取ID。

    $result = mysql_query("SELECT `id` FROM `order` WHERE `orderNumber` = '$orderNumber'") or die (mysql_error());
    $row = mysql_fetch_assoc($result);
    $id = $row['id'];
    

    另一方面,您应该使用PDOMysqlimysql_* 函数已被弃用并被视为不好的做法。

    如果您打算继续使用mysql_query,至少确保使用mysql_real_escape_String 清理$orderNumber 变量。

    【讨论】:

      【解决方案3】:

      使用具有查询功能的自定义数据库类构建,但 SQL 查询有效

      $id = 1;
      $database->query("SELECT * FROM tbl_post WHERE post_id = '$id'");
      

      【讨论】:

        【解决方案4】:
        mysqli_query($connection,"SELECT `id` FROM `order` WHERE `orderNumber` = '$orderNumber'");
        

        如您所见,您必须包含 $connection。

        【讨论】:

        • 这不适用于该函数的mysql 版本。问题实际上是接受的答案所指出的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-27
        • 1970-01-01
        相关资源
        最近更新 更多