0

この質問の解決策は非常に簡単であることは知っていますが、何かが欠けています。

私は人々の名前で満たされたデータベースを持っています。ほとんどの場合、@ URL は次のように表示されます。

MySite/People/エイブラハム_リンカーン

ただし、ワシントン州でのみ重要な人物は、次のような @ URL で表示されます。

MySite/People/Washington/Gary_Locke

データベース テーブルの値、フィールド URL (Abraham_Lincoln) が URL (Abraham_Lincoln) と一致するため、Abraham Lincoln は単純です。ただし、データベース値 Gary_Locke は URL Washington/Gary_Locke と一致しません。

そのため、ある人がワシントン (WHERE サイト = 'WA') に関連付けられている場合、Web ページの URL ($MyURL) がデータベース テーブル フィールドの URL ではなく、ワシントン/ + URL になるように、クエリを変更しようとしています。

しかし、「Washington/」と URL を追加するにはどうすればよいでしょうか。次のクエリは、SQL でテストすると 0 の結果を返しますが、私の PHP ページではまったく機能しません。

$result = mysql_result(mysql_query("SELECT COUNT(URL)
FROM people
WHERE URL = '$MyURL' AND Site = 'PX'
OR '$MyURL' = 'Washington/'URL AND Site = 'WA'"),0);

繰り返しますが、Gary Locke (フィールド URL の Gary_Locke) に焦点を当てている場合、MySite/People/Gary_Locke ではなく、MySite/People/Washington/Gary_Locke に彼に関する情報を表示できるようにしたいと考えています。

誰が私が間違っているのか教えてもらえますか? ありがとう。

4

1 に答える 1

1

Concat はワシントンに参加し、以下の URL を参照してください

$result = mysql_result(mysql_query("SELECT COUNT(URL)
FROM people
WHERE URL = '$MyURL' AND Site = 'PX'
OR '$MyURL' = CONCAT('Washington/', URL) AND Site = 'WA'"),0);

SQL エラーが発生した場合にエラーが表示されるので、何が間違っているかがわかります。

$res = mysql_query("SELECT COUNT(URL)
FROM people
WHERE URL = '$MyURL' AND Site = 'PX' 
OR '$MyURL' = CONCAT('Washington/', URL) AND Site = 'WA'");

if (!$res) {
    die('Invalid query: ' . mysql_error());
}

$result = mysql_result($res, 0);

また、パラメーターをエスケープしていることを願っています。これでうまくいきます。(なぜそれが良い考えなのかわからない場合は、SQLインジェクションを検索してください)

$MyURL = mysql_real_escape_string($MyURL); 

最後に、関数の mysql_ セットは、最新バージョンの php からすぐに削除されます。これが長期的なプロジェクトである場合は、mysqli または pdo を確認する必要があります。

于 2013-08-12T06:18:19.140 に答える