-4

SQL ステートメントが無効です。SQL 構文にエラーがあります。5 行目の「.A Biography of the Rev. Absalom Dawe.」「ORDER BY nmc_cd.CDTitle」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

$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 に答える