私はテーブルを持っているし、再度URLを持つテキストフィールドを持っている、私は重複したURLを持つ行が欲しくないが、挿入する前にチェックをしたくない、テキストフィールドを作る方法がない独自のフィールドタイプを使用することを提案できますか?PHP独自のテキストフィールド?
1
A
答えて
6
データベースのテキストフィールドが一意キーまたは主キーに設定されている場合、または設定している場合は、重複を入力しようとすると挿入ステートメントが失敗します。そうすれば、失敗したインサートを適切に処理して、それを持っていなければなりません。
他のところで指摘したように、実際のTEXTフィールドを一意にすることはできませんが、varcharフィールドを使用している場合は実行可能です。これは重要ではないかもしれません(誤った通信かもしれません).TextフィールドにURLを格納している場合は、他の問題もあります。
1
URLフィールドのハッシュを含む別のフィールドを使用できます。
0
正しい方法は、テーブルにURLが存在するかどうかを確認し、そうであれば挿入し、そうでない場合は挿入しません。
例外処理は、実際に必要な場所で使用することをお勧めします。通常の機能を置き換えるものとして使用しないでください。
7
解決策は、基本的にfield_hashのようなデータベースに余分なフィールドを追加し、それをVARCHARにしてIndexをユニークにします。
CREATE TABLE 'info' (
'text' text NOT NULL,
'text_hash' varchar(40) NOT NULL,
PRIMARY KEY ('id'),
UNIQUE KEY 'text_hash' ('text_hash')
);
$text = 'Full Text';
$text_hash = sha1($text);
mysql_query("INSERT INTO info (text, text_hash) VALUES ('$text', '$text_hash')");
関連する問題
- 1. 独自のPHPテンプレートエンジンを書くには?
- 2. PHP mysqli prepare statements独自のクラス
- 3. PHPの自動ロード独自のクラスとAWS SDK
- 4. 独自のビューコントローラテンプレート
- 5. マングース独自の自動インクリメントスラッグ
- 6. 独自の自動設定
- 7. 独自のロギングレベルの独自のログメソッドを作成する方法
- 8. ColdFusion:独自の「独自のJavaクラス」の使用について
- 9. パンダ:独自のデータフレーム
- 10. ExUnit独自のケース
- 11. 独自のzバッファー
- 12. as3独自のログインセッション
- 13. Android独自のボリュームコントロール
- 14. Heisenbug独自のヘッドレスブラウザ
- 15. Android独自のアレイアダプター
- 16. 独自のPHP MVCフレームワークを使用して独自のブログエンジンを実装しています
- 17. すべての派生テーブルは、独自の別名(SQL&PHP)
- 18. PHPの動的テキストフィールド
- 19. php oauth peclまたは独自のクラスを作成
- 20. PHPログインとLaravel APPを独自のログインで接続します
- 21. PHP MVC - 各ページに独自のクラスが必要ですか?
- 22. PHPで独自のエンコーダとデコーダを作成するには
- 23. PHPで独自のセッション管理を実装する
- 24. のjQuery:独自のキー名
- 25. 独自のフォームデザイナの作成
- 26. ビルドサマリーの独自のhtmlレポート
- 27. 独自の* ngIfの実装
- 28. 独自のアイコンナビゲーションバーのブートストラップ
- 29. ASP.NET:IsInRoleの独自の実装
- 30. 独自のインスタンスのPythonコールコンストラクタ
私は一意のキー、任意のアイデアを追加するために必要なフィールドに最大の長さを追加できないようですか? – zuk1
フィールドをテキストからvarcharに変更して、適切な長さを与えてください。 – TheTXI
しかし、私はちょうど私が250を超える長さのURLを挿入しようとしていると心配していましたが、それは非常にありそうもありません。 あなたは、テキストフィールドにURLを格納することから来たあなたが言及した他の問題は何ですか? – zuk1