如何通过从PHP传递值来显示数据?

时间:2012-12-11 09:11:49

标签: php mysql

  

无效的SQL语句。您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在'.A Rev. Absalom Dawe的传记附近使用'''ORDER BY nmc_cd.CDTitle'在第5行

$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";

2 个答案:

答案 0 :(得分:4)

看起来$CDTitle中有一个',这正在给工作带来麻烦。

至少应该$CDTitlemysql_real_escape_string()。这将有助于防止SQL注入攻击(以及防止这些更普通的错误)。

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

只是澄清一下,解决这个问题的简单方法就是简单地用第一行代替:

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

虽然您应该真正关注使用PDO和准备好的语句。它们起初看起来有点令人生畏,但是一旦你开始使用它们,你会发现它们没有太大的不同,但更安全。

答案 1 :(得分: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";