sql >> データベース >  >> RDS >> Mysql

プリティリンクのアポストロフィとコロン

    まず第一に、エスケープされた文字列をデータベースに格納するという考えは奇妙に見えます。 MySQLは任意の文字列を保存でき、バイナリシーケンスも安全に保存できます。

    次に、実際のタイトルからきれいなURLへのマッピングとその逆について説明します。タイトルをURLに適した文字列に変換してから元に戻すというアイデアは、このような変換を元に戻すのが非常に難しいため、問題を解決する一般的な方法ではありません。この問題を解決する通常の方法は、URLに対応するように変更された本のタイトルを含む別の列をデータベースに含めることです。また、この列の値は一意にする必要があります。テーブルは次のようになります:

    +-----+-----------------------------+----------------------------+
    | BID | book_title                  | book_title_url             |
    +-----+-----------------------------+----------------------------+
    |   1 | Why Can't I Be You: A Novel | why-can-t-i-be-you-a-novel |
    +-----+-----------------------------+----------------------------+
    

    この列でテーブルにインデックスを付け、book_titleの代わりに使用する必要があります viewbook.php内のSQLクエリで このようなスクリプト:

    SELECT * FROM books WHERE book_title_url='$booktitle'
    

    $booktitleの場所 $_GET['booktitle']を介して受け取った本のタイトルが含まれています SQLインジェクションを防ぐために適切にエスケープしました。

    したがって、きれいなURLはhttp://www.example.com/title/why-can-t-i-be-you-a-novelのようになります。 そして、それらはApacheによってhttp://www.example.com/viewbook.php?booktitle=why-can-t-i-be-you-a-novelのようなものに書き直されます。 。

    繰り返しますが、これは通常、クリーンURLが実装される一般的な方法です。それがあなたにも役立つことを願っています。

    既存のレコードの場合、book_title_urlにデータを入力できます 次のような列:

    UPDATE books SET book_title_url=REPLACE(REPLACE(REPLACE(book_title, " ", "-"), ":", "-"), "'", "-");
    


    1. MySQLでテーブルを作成する

    2. Sequelize BulkCreate()は、主キーにNULL値を返します

    3. Mysqlデータベースの最適化

    4. MONGODB Mongoimportの可能性はスピードアップしますか?