KOLAY PHP soru?

6 Cevap php

HI Beyler,

Ben sorunu şu var. Ben doğru bilgi almak için, mySql db erişmek için, bir php siteye benim iPhone app bağlanmak çalışıyorum.

Bu benim kodudur:

    <?php
    mysql_connect ("localhost", "user", "pass") or die (mysql_error());
    echo "Connected to MySql <br /><hr />"; 
    mysql_select_db ("database_com") or die (mysql_error());
    echo "Connectted to Database <br /><hr />";

    $country = $_POST['country'];// THIS IS THE VALUE I WANT TO LOAD INTO THE SELECT STATEMENT
    echo "value <br /><hr />" . $country;

    $query = "SELECT * FROM world WHERE land='$country'";
    $result = mysql_query($query) or die (mysql_error());
    while ($row = mysql_fetch_array($result)) {
        $1 =    $row['1'];
        $2 =	$row['2'];
        $3 =	$row['a3'];
        $4 =	$row['4'];



        $xmltext = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<country></country>";
        $xmlobj = simplexml_load_string($xmltext);


        $xmlobj->addChild("1", $1);
        $xmlobj->addChild("2", $2);
        $xmlobj->addChild("a3", $a3);
        $xmlobj->addChild("4", $4);
        print header("Content-type: text/plain") . $xmlobj->asXML(); // Place future code ABOVE this line

        $xml->save(statistic.xml);

      }
    ?>

Ben toprak = "Almanya" değerini hardcode i bir cevap olsun, ama ben başka bir şey yaparsanız, hiçbir şey çıkıyor.

Ben u bana yardımcı olabilir umuyoruz.

6 Cevap

Eğer bir form var mı ki gönderileri php sayfasına bir ülke? Eğer öyleyse, yöntem = "post" kullanarak şeklidir? Eğer url ülkeyi yapışmasını iseniz, yerine $ _POST $ _GET kullanın.

Ayrıca, (tüm veritabanlarını silme birisi gibi) SQL enjeksiyon sorunları önlemek için ($ _POST ['ülke']) mysql_real_escape_string diyoruz.

Ayrıca, bu satır:

print header("Content-type: text/plain") . $xmlobj->asXML();

konularda bir dizi vardır. Bu olmalıdır:

header("Content-type: text/plain");
print $xmlobj->asXML();

Ancak, başka şeyler yazdırdıktan sonra başlık göndermek değil - senin yankı erken komut çağırır gibi. Bu henüz bir sorun gibi görünmüyor, ancak sorgu çalışır zaman olacaktır.

Ayrıca, sonuç kümesi döngü ediyoruz. Eğer tek bir sonuç bekliyorsanız, while döngüsü hendek. Birden fazla sonuç varsa, çünkü header () çağrısı hataları alırsınız.

Ne olur eğer print_r veya var_dump($_POST)? Sizin POST boş, ya da en azından $_POST['country'] gibi ilk bakışta görünüyor.

Eğer $ _POST ['ülke'] kontrol ettiniz aslında bir değer içerir?

Denemek

echo $query;

Biz içeriğini görebilmeniz ve yazı güncellemek.

Basit bir hata catch deneyin:

<?php
mysql_connect ("localhost", "user", "pass") or die (mysql_error());
echo "Connected to MySql <br /><hr />"; 
mysql_select_db ("database_com") or die (mysql_error());
echo "Connectted to Database <br /><hr />";

$country = $_POST['country'];// THIS IS THE VALUE I WANT TO LOAD INTO THE SELECT STATEMENT
echo "value <br /><hr />" . $country;
if (!isset($country) || $country == FALSE /* other fail conditions */) {
  echo "<p>There was a problem; one, or more, error condition occurred:</p>";
  echo "<pre>" . print_r(get_defined_vars(),true) . "</pre>";
}
else {
    // database access stuff
}
?>

Değerleri ayarlanmamış (veya hata testler karşılanmıştır) Bu şekilde, tüm anda tanımlanmış değişkenler ve veritabanı erişimi oluşmaz bir görüntü olsun.

Ham, ama bazen neler olup bittiğini görmek için yardımcı olur. Rağmen, şahsen, çok daha büyük olasılıkla sadece bir yazım hatası $_POST['country'] yerine $_POST['contry'] ya da bir şey, ya da $_POST yerine {[kullanılarak yaşıyoruz düşünüyorum (3)]}.

Bu hata ayıklamak için iyi bir yolu dosyanızın üstünde bu blok koymak için:

<?php
if (!isset($_POST)) {
    die('A $_POST is required for this page.');
}
...

Bu kod barış yazma programı hata ayıklama

<?php
   if (!isset($_POST)) {

    }
?>