Nasıl benim metin dizeleri soru işaretleri işleme gelen sorgu sınıfını önlemek mi?

2 Cevap php

Php için oldukça yeni, bu kadar aptal özür görünüyor eğer. Gerçekten benim şirkette diğer geliştiricilerin önceden yazılmış kodu bu bir sürü taklit ediyorum.

Biz bir sorgu çalıştırmak yolu bu gibi temelde:

$qry = new SQLQuery;
$sqlString = "SELECT * FROM database.table WHERE table.text = '" . 
              $textVar . "' and table.text2 = '" . $text2Var."'";
$qry->prepare(String::Condense($sqlString));
$qry->execute();

Ben yaşıyorum sorun $textVar veya $text2Var meşru onların metnin bir parçası olarak, bu sorgu SQLQuery sınıfı tedavi kırmak için neden onlara soru işaretleri (?) Sahip olmasıdır bir değişken olarak soru işareti ben geçirerek değilim.

Peki nasıl SQLQuery sınıf soru işaretlerini görmezden talimat verebilirsiniz?

P.S. Bana bir cevap verirken ben terminoloji bilmiyorum bu bir sürü vardır eminim, aklınızda tutun lütfen.

2 Cevap

Sen $sqlString ? Eğer $textVar ve $text2var koyarak, ve sonra için bu bağlamak için gereken yere sahip olmak için hazır deyim istiyorum deyim.

Bu tutucu olarak onları tedavi çünkü they look like placeholders Eğer SQL hazırlamak zaman.

Yani:

$sqlString = "SELECT * FROM database.table WHERE table.text = ? and table.text2 = ?"

Sen MySQL Prepared Statements bir göz atın ve nasıl çalışır ve ne sağladıkları faydaları yakından tanımak gerekir.

Muhtemelen daha böyle bir şey olmalı bu yüzden o tür bazı PDO türevi gibi görünüyor:

$qry = new SQLQuery;
$sqlString = 'SELECT * FROM database.table WHERE table.text=? AND table.text2=?'
$qry->prepare($sqlString);
$qry->execute(array($textVar, $text2Var));