Operasi LIKE Django.
P粉425119739
P粉425119739 2023-08-02 15:55:17
0
1
513
<p>Saya cuba menghantar pertanyaan melalui Python Django, dan saya juga cuba menghalang sebarang serangan suntikan SQL. <br /><br />Bolehkah seseorang menerangkan cara pemesejan berfungsi? Contohnya, contoh pertanyaan SUKA. </p><p><br /></p> <pre class="brush:php;toolbar:false;">"PILIH * DARI pentadbir DI MANA nama SEPERTI '%myTitle%'</pre> <p>Mudah untuk mengkonfigurasi pertanyaan seperti ini. </p> <p><kod>cursor.execute("SELECT * FROM admin WHERE name= %s", (_id, ))</code>;</p> <p>Tetapi mudah untuk membuat kesilapan dengan membatalkan %% dalam teks apabila memasukkan %s, contohnya. </p> <pre class="brush:php;toolbar:false;">PILIH * DARI pentadbir DI MANA nama SEPERTI %s</pre> <p>Apabila pertanyaan selesai, ia akan kelihatan seperti ini. </p> <pre class="brush:php;toolbar:false;">PILIH * DARI pentadbir DI MANA nama 'MyTitle'</pre> <p>Ia sedang dilaksanakan dengan betul, tetapi saya mahu %% ditetapkan antara %s dan SUKA. </p> <pre class="brush:php;toolbar:false;">SELECT * FROM admin WHERE nama '%MyTitle%'</pre> <p>Bolehkah seseorang menerangkan cara menyelesaikan masalah ini? <br /><br />Skrip mudah saya adalah seperti berikut:</p><p><br /></p> <pre class="brush:php;toolbar:false;">daripada sambungan import django.db tajuk = "myTitle" query = "PILIH * DARI pentadbir DI MANA nama SEPERTI %s" dengan connection.cursor() sebagai kursor: cursor.execute(pertanyaan, (tajuk,))</pre> <p><br /></p>
P粉425119739
P粉425119739

membalas semua(1)
P粉293550575

Sila semak halaman ini.

Apakah yang setara dengan SQL "LIKE" pada pertanyaan Django ORM?

Itulah cara ORM Django.

https://docs.djangoproject.com/en/4.2/topics/db/sql/

Beginilah cara Django mengendalikan pertanyaan mentah.

>>> query = "SELECT * FROM myapp_person WHERE last_name = %s" % lname
>>> Person.objects.raw(query)

Apa yang anda tunjukkan bukanlah kod Django, tetapi kod Python-MySQL tulen.

Dengan Python-MySQL anda boleh melakukannya seperti yang anda lakukan dan ia akan mengendalikan isu sebut harga dan suntikan.

Tetapi anda sepatutnya.


title_like = f"%{title}%"
cursor.execute(query, (title_like,))

title_like ialah rentetan padanan kabur.

mysql seperti rentetan yang mengandungi %

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan