Bir dosyaya gerçek SQL sorgu yazdırmak için?

3 Cevap php

Say, bu benim sorgu

$stmt = "SELECT * FROM foo WHERE x=?";

Nasıl ekran veya PHP bir dosyaya yukarıdaki sorguyu artı bağlı parametreyi yazdırırım?


Ben yazdırırken $stmt diyor:

mysqli_stmt dizeye dönüştürülemedi

İşte benim kod:

if ($stmt = $this->conn->prepare($query)) { 
  $stmt ->bind_param('ss', $un, $pwd); 
  logToFile ("my.log", "inside mysql\n"); 
  logToFile ("my.log", $stmt); 

3 Cevap

Parametre yer tutucuları ile SQL sorgu içerir $query PHP değişkeni oturum açabilirsiniz.

Ama muhtemelen parametre değerleri ile birlikte sorgu giriş yapmak istiyorum. Bu çok yaygın bir istek olduğunu ancak bu bilgilerin istemci kitaplığı aracılığıyla maruz kalmaz, böylece PHP onu okuyamaz.

Sen MySQL General Query Log içinde parametre değerleri ile birlikte sorgu olsun, sen execute() sorgu olarak. Olabilir

print $query;

ama $ sorguda ne olduğunu biliyor musun?

deneyin:

print serialize($stmt);

Bu deyim nesne ne olduğunu size anlatacağım

Aslında, serialize benim favori ayıklama çıktı biçimidir.

EDIT:

Quick Answer

Ah, şimdi anlıyorum. Bir dizi yazdırmak için çalışıyoruz. Her değerini yazdırmak bunun üzerinden / döngü yinelemek gerekiyor. $ Deyim bir dizi olarak SQLite döner.

Başlatmak için bu deneyin:

foreach( $stmt as $key => $value){
    echo "Key: $key, Value: $value <br />";
}

An explanation:

Burada ne olur PHP SQL bir dizi alır ve bir dizideki her eleman bir anahtar ve bir değere sahip olmasıdır. Aşağıdaki düşünün:

$myArray[0] = "ElementZero";
$myArray[1] = "ElementOne";
$myArray[2] = "ElementTwo";
...
$myArray[15] = "ElementFifteen";

Köşeli parantez içindeki sayılar (0,1,2,15) ve anahtarlar ve tırnak metin değerlerdir. Bu, her eleman bir dizin sayısına sahiptir dizinlenmiş dizidir. Dizeleri bu array.A hızlı örnekte her maddeyi tanımlamak yerine sayıların kullanıldığı yerlerde bir ilişkisel dizidir:

$myArray['bob'] = "foo";
...
$myArray['joe'] = "bar";

Bu dizide, biz tuşları yerine numaraları gibi dizeler kullanın. Çok boyutlu diziler ile uğraşırken Şahsen ben sadece bu yararlı görüyorum, ama şimdi için değil ...

İyi şanslar, bu yardımcı olur umarım.