質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2540閲覧

sqlite3 - データ追加時のエラーの原因が不明です。

starrow1103

総合スコア137

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2017/04/27 08:02

困っていること

あるカラムに以下の文字列をinsertした時に、エラーが発生してしまいます。

<p>index.phpに固定ページの内容を入れたかったので、メモ。</p>\n<h3 class="code_title">固定ページの内容を挿入.php</h3>\n<pre><code class="language-php line-numbers">&lt;?php \n\t$page_info = get_page_by_path(\'固定ページのスラッグを入力\');\n\t$page = get_post($page_info);\n\techo $page-&gt;post_content;\n?&gt;\n</code></pre>\n<p>以上です。あとはcssで整えるだけ</p>

(↑ブログの記事htmlのbodyです。)

エラー内容

python

1sqlite3.OperationalError: near "固定ページのスラッグを入力": syntax error

どうやら、固定ページの〜の文字列がエラーの原因となっているようですが、よくわかりません・・・。

どなたか解決策をご存知であればご教授ください・・・。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SQLiteの'のエスケープ方法は、''と二回にしてやることです。'ではありません。

このようなエラーが起きるということはおそらくSQLを直接作成されていると思いますので、直接SQLを作成するのは避け、ライブラリのパラメータ割当を利用することをおすすめします。SQLインジェクションの原因になります。

投稿2017/04/27 08:18

TakeoAsai

総合スコア880

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

starrow1103

2017/04/27 23:11 編集

回答いただきありがとうございます。 結局、文字列のエスケープではなく、パラメーター割り当ての方法がおかしいために起こっていたものでした。 データの挿入等は全て?で行うように変更しましたが、一部でもしようは危ないのでしょうか。 例えば、汎用性を持たせるためにオリジナルのデータベース管理ライブラリを作成しています。 その際に、まだ一部の要素を(例えばテーブル名など)を%sで挿入したりしています。 例えばこんな感じですが・・・ def insert(self,data_tuple): num = len(data_tuple) ins = '(' + '?,'*(num-1) + '?)' # ←無理矢理すぎて失笑 self.cur.execute('INSERT INTO %s VALUES %s' % (self.table_name,ins),data_tuple) テーブル名、挿入データの長さに合わせて自由にINSERTできるようにしたいと考えています。 現時点では趣味程度で、人様のデータをオンライン上で扱うようなことはしませんが、 今後のためにこれはやめとけというのがありましたらご教授願いますm(_ _)m
TakeoAsai

2017/04/28 06:42

そのテーブル名はwebページのinputで文字列として受け取ったりしていませんか?もしそうならば、悪意のある攻撃者は好きにできてしまいます。 また、お一人で書くならば問題ないですが、他の方が%Sで埋め込んでいるコードを見た時、そこにセキュリティの問題がないことを直ぐに理解できますか? ですので、できればあまりよくない方法かと思います。
starrow1103

2017/05/01 02:57

ありがとうございます。 いつかウェブアプリを作るときは、直接記述するように制作しようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問