SQL ancak PHP çalışır sorgu

4 Cevap php

Ben bazı verileri almak için PHP kodu bir parça eklediğiniz bir SQL sorgusu ile sorun yaşıyorum. Sorgu kendisi SQL içinde mükemmel çalışıyor, ama benim PHP komut dosyası içinde bunu kullanırken "Sorgu Hata" sonra tüm SQL deyimi okur diyor. Ben kopyalayabilir ve doğrudan MySQL içine hata mesajı SQL deyimini yapıştırın eğer hiçbir hata ile çalışır.

Benim araştırma ben bir yerde bir kesme işareti eksik, bu yüzden PHP hükümler kafa karıştırıcı olabilir, ama inanıyorum onları nerede eklemek bilmek yeterince deneyimli değilim.

Sorgu daha önce PHP komut dosyası belirtilen bir değişken denir $ kull kullanıyor.

$sql= <<<END

SELECT sum(final_price)  
FROM (
    SELECT Table_A.rated_user_id, Table_B.seller, Table_B.final_price
    FROM Table_A
       INNER JOIN Table_B ON Table_A.id=Table_B.id
) AS total_bought
WHERE seller != $userid
AND rated_user_id = $userid

    UNION ALL

SELECT sum(final_price)  
FROM (
    SELECT Table_A.rated_user_id, Table_C.seller, Table_C.final_price
    FROM Table_A
        INNER JOIN Table_C ON Table_A.id=Table_C.id
) AS total_bought
WHERE seller != $userid
AND rated_user_id = $userid

END;

Bu bölümden sonra komut dosyası daha sonra çıkışını tanımlamak ve her zamanki gibi gerekli parçaları yankı devam ediyor. Ben başka bir yerde çalışır gibi kod son bölümü ile mutluyum, ama ben yaşıyorum sorun yukarıdaki bölümünde görünüyor.

Herkes hata nokta olabilir?

Edited to add the following additional information:

Tüm alanların hiçbiri yazı, sayısal değerlerdir. Ben '$ kimliği' koyarak denedim ama bu sadece hata görüntülemek yapar 'hata sonucunda bu değerin etrafında. Sorun aynı kalır. Ekleme parenthasis da yardım etmedi. Benim soru göndermeden önce deneme ve erorr biraz yapmıştı.

Bu yardımcı olur, aşağıdaki gibi, kullanılan kod Bieng son parçasıdır:

$result = mysql_query($sql);
if (!$res) {
  die('Error: ' . mysql_error() . ' in query ' . $sql);
}
$total_bought = 0;
while ($row = mysql_fetch_array($result)) {
  $total_bought += $row[0];
}
$total_bought = number_format($total_bought, 0);
echo '<b>Your purchases:  '  . $total_bought . '</b>';
echo "<b> gold</b>";

4 Cevap

Sen !$res, olması gereken kontrol ediyoruz !$result:

$result = mysql_query($sql);
if (!$result) {
  die('Error: ' . mysql_error() . ' in query ' . $sql);
}

Sana echo() tarayıcınızdan yerde sorgu ing ve copy-yapıştırma konum varsayalım. O $userid xml etiketleri içerdiğini olabilir mi? Onlar tarayıcıda görüntülenir olmaz, bunları noktaya sayfa kaynağını görmek gerekir.

Eğer alıntı $ kullanıcı adınız ile test ve iki tablo etrafında parantez gerekir.

Ben rated_user_id bir sayısal alandır, ama satıcı ne tür olduğunu varsayarak yaşıyorum? Bir karakter alanı varsa streetpc anlaşılacağı gibi, daha sonra $ kimliği kote olması gerekir.

Kontrol etmek için başka bir şey, sorgunun her satırı için hatlarının bitiminden sonra en az bir boşluk olması. Bu daha önce beni atmış. Veritabanı aracı için editör / IDE giderken Bazen bu sorunlar sessizce halledilir.