Rumah  >  Artikel  >  pangkalan data  >  Cara Mengelakkan Padanan Tersilap dalam Pertanyaan MySQL dengan Mencegah Penukaran Berangka

Cara Mengelakkan Padanan Tersilap dalam Pertanyaan MySQL dengan Mencegah Penukaran Berangka

DDD
DDDasal
2024-10-24 08:50:30190semak imbas

How to Avoid Mistaken Matches in MySQL Queries by Preventing Numeric Conversion

Memahami Penukaran Numerik dalam Pertanyaan mySQL

Dalam mySQL, pertanyaan seperti SELECT * FROM table WHERE email=0 secara tidak dijangka mengembalikan semua baris, walaupun ketiadaan '0 ' nilai dalam medan e-mel jadual. Ini berlaku kerana medan e-mel, biasanya jenis varchar, mengalami penukaran automatik kepada integer.

Memandangkan medan varchar boleh memuatkan aksara bukan digit, sebarang rentetan e-mel yang tidak mempunyai perwakilan integer yang sah akan menjadi lalai kepada 0. Penukaran ini boleh membawa kepada padanan palsu dan potensi kelemahan keselamatan.

Untuk mengelakkan isu ini tanpa mengubah suai pertanyaan, adalah penting untuk memastikan medan rentetan hanya dibandingkan dengan nilai rentetan. Format pertanyaan yang betul untuk perbandingan tersebut ialah:

<code class="sql">SELECT * FROM table WHERE email='0';</code>

Dengan melampirkan nilai perbandingan dalam petikan tunggal (' '), medan e-mel kekal sebagai rentetan, menghalang penukaran angka dan memastikan padanan yang tepat.

Atas ialah kandungan terperinci Cara Mengelakkan Padanan Tersilap dalam Pertanyaan MySQL dengan Mencegah Penukaran Berangka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn