【问题标题】:NextGen plugin and SQL syntax errorNextGen 插件和 SQL 语法错误
【发布时间】:2013-10-23 13:14:41
【问题描述】:

我正在尝试动态获取 NextGen 库 ID 并出现 SQL 语法错误

#1064 - You have an error in your SQL syntax

看看下面我出错的代码

<?php
global $wpdb;
global $post;
$galleryid = get_post_meta( $post->ID, 'image_gallery', true ); 
$pictures=$wpdb->get_results("SELECT * FROM wp_ngg_pictures WHERE galleryid='$galleryid'");
?>

还是我做错了?

【问题讨论】:

  • 这是您收到的完整错误消息吗?
  • 数据库正在处理 WP 所以是的,我认为这是真正的错误消息 :)
  • @PeeHaa - 我认为它通常包含导致实际错误的 SQL 语句部分。
  • 我在我的 phpmyadmin 数据库中手动输入我的 sql。完整的错误信息如下------------------------------------------- ---------- #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '"SELECT * FROM wp_ngg_pictures WHERE galleryid='$galleryid'"' 附近使用正确的语法--------------- -----------------------------
  • 顺便说一句。这是一个很好的例子,说明如何不这样做!您为 sql 注入打开大门,使用准备好的语句或至少一个 mysql 转义。

标签: php sql wordpress syntax nextgen-gallery


【解决方案1】:

$galleryid 很可能有一个意想不到的值,但是您应该使用 Wordpress 为您的查询提供的 prepare() 方法:

$pictures = $wpdb->get_results( 
    $wpdb->prepare( 
        "SELECT * FROM wp_ngg_pictures WHERE galleryid = %d",
        $galleryid
    )
);

如果您想测试查询,可以获取prepare() 的输出并在 phpMyAdmin 中运行。

【讨论】:

  • 谢谢杰克,你让我开心:)
猜你喜欢
  • 2014-05-25
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-01
  • 1970-01-01
  • 2023-04-08
相关资源
最近更新 更多