-4

无效的 SQL 语句。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的“.A Biography of the Rev. Absalom Dawe.”附近使用正确的语法。

$CDTitle = $_REQUEST['CDTitle']; // make sure its only an id (SQL Incjection problems)
    $sql = "SELECT nmc_cd.CDTitle, nmc_cd.CDYear, nmc_cd.CDPrice, nmc_category.catDesc, nmc_publisher.pubName
FROM nmc_cd
NATURAL JOIN nmc_category
NATURAL JOIN nmc_publisher
WHERE nmc_cd.CDTitle = '$CDTitle'
ORDER BY nmc_cd.CDTitle
LIMIT 0 , 30";
4

2 回答 2

4

看起来里面$CDTitle有一个',它在工作中扔了一个扳手。

至少你应该$CDTitle通过mysql_real_escape_string(). 这将有助于抵御 SQL 注入攻击(以及防止这些更普通的错误)。

但是,强烈建议使用PDO和准备好的语句,因为它们更可靠。

澄清一下,修复它的简单方法是将第一行替换为:

$CDTitle = mysql_real_escape_string($_GET['CDTitle']);

尽管您应该真正考虑使用 PDO 和准备好的语句。一开始它们看起来有点吓人,但一旦你开始使用它们,你会发现它们在使用上并没有太大的不同,但更安全。

于 2012-12-11T09:17:03.283 回答
0

改写成这样

$CDTitle = $_REQUEST['CDTitle']; // make sure its only an id (SQL Incjection problems)
    $sql = "SELECT nmc_cd.CDTitle, nmc_cd.CDYear, nmc_cd.CDPrice, nmc_category.catDesc, nmc_publisher.pubName
FROM nmc_cd
NATURAL JOIN nmc_category
NATURAL JOIN nmc_publisher
WHERE nmc_cd.CDTitle = '".mysql_real_escape_string($CDTitle)."'
ORDER BY nmc_cd.CDTitle
LIMIT 0 , 30";
于 2012-12-11T09:20:23.447 回答