SQL sorgu sayfası boş gitmek neden

4 Cevap php

Ben php kullanarak bir web sitesi yapıyorum ve ben bir SQL sorgusu ile bazı sorun yaşıyorum.

$dataArray = array();
$result = mysql_query("SELECT * FROM test WHERE web_id='$websiteID'")
    or die(mysql_error());

while ($row = mysql_fetch_array($result)) {
    $k = $row['kfoo'];
    $v = $row['vbar'];
    $dataArray[$k] = $v;
}

(Yani sadece tüm beyaz görüntüler) sayfa boş gitmek neden olduğunu ancak, olması gerektiği gibi kod. Ben çift kontrol ve web_id kesinlikle doğru isim ve doğru durumda ettik.

(Temelde başka bir şey web_id), daha sonra sayfa gösterecektir 'foo', örneğin, olabilir, ama hata iletisi "Bilinmeyen sütun ile için sorguda web_id değiştirirseniz 'where yan tümcesi' "in 'foo'.

Herkes bu neden olabilir bir fikriniz var mı? Burada masa testi oluşturmak kod:

$dataDB = "CREATE TABLE test
(
    data_id INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(data_id),
    web_id INT,
    kfoo TEXT,
    vbar TEXT
)";

mysql_query($dataDB,$con);

Update

Burada bazı yanıtları dayanarak, ben $ WebSitesiKimliği yerinden tırnak çıkarılır ve kullanma hataları gösterilir

error_reporting(E_ALL);
ini_set('display_errors', 1);

Bu ben şimdi çözdüm bu konuda daha önce bir sözdizimi hatası gibi hatalar bir çok görüntülenir. Ancak, birçok hatalar kalır ve onlar bana pek mantıklı gelmiyor. İşte benim yöntemi için tam kod:

function getOutputSQL($websiteID,$userInput) {
 $result = mysql_query("SELECT * FROM websites WHERE websiteID=$websiteID") 
    or die(mysql_error());

  while ($row = mysql_fetch_array($result)){
    $url = $row['url'];
    $exp = $row['exp'];
    $output= $row['textPrint'];
    $endUrlStart = $row['outUrlStart'];
    $endUrlEnd = $row['outURLEnd'];

    $image = $row['image'];
    $print = $row['print'];
    $post = $row['post'];

    $dataSource = $row['dataSource'];
    $dataSourceName = $row['dataSourceName'];   		

  }

  // construct array of data names and values
  $dataArray = array();
  $result = mysql_query("SELECT * FROM test WHERE web_id=$websiteID") 
    or die(mysql_error());

  while ($row = mysql_fetch_array($result)) {
    $k = $row['kfoo'];
    $v = $row['vbar'];
    $dataArray[$k] = $v;
  }

  // construct array of expressions and replacements
  $result = mysql_query("SELECT * FROM regex WHERE web_id=$websiteID");
  $expArray = array();

  while ($row = mysql_fetch_array($result)) {
    $e = $row['ex'];
    $r = $row['re'];
    $expArray[$e] = $r; 
  }

  return getOutput($userInput,$url,$exp,$output,$endUrlStart,
     $endUrlEnd,$dataSource,$dataSourceName,$post,$image,$print,
     $expArray,$dataArray); 
}

Ben alıyorum hataları bu gibi tüm vardır -

Notice: Undefined variable: / home çıkış / daniel / web / resultsTest.php hattı 113 "

Bu url için birkaç kez tekrarlar, exp, çıkış, endUrlStart, endUrlEnd, dataSource, datakaynakname, post, görüntü ve baskı Hattı 113 büyük geri dönüş hattıdır.

Şey bildiğim kadarıyla söyleyebilirim bu değişkenler tanımlanır, ve ben başka bir sayfada göstermek, çünkü tablo, boş değil biliyorum.

Solved

Sınıflandırılmaktadır. Sorun benim başka bir kod parçası aslında - ben yanlış getOutputSQL çağırıyordu, ama şimdi çözdüm!

4 Cevap

Genel olarak php boş bir sayfa engelli error notifications gösterir. İlk başta. Htaccess veya php.ini üzerinden bunları sağlamak gerekir.

BTW: Bildiğim kadarıyla tamsayılar biliyorum SQL alıntı olmamalıdır.

Ben bu size hiçbir hata yokken (hiçbir eko ya da baskılar şablonları ya da bir şey) yok çünkü sence hiçbir şey outputted yapan tüm kodu ise gerçek kod aslında dışarı, bir şey koymak olmadığını bekliyoruz

Ayrıca error_reporting hem set ve display_errors ayarlanmış olduğundan emin olun. Sen kullanarak komut üst bunu yapabilirsiniz

error_reporting(E_ALL);
ini_set('display_errors', 1);

Bu şekilde tüm hataları görmek uou'll.

EDIT
PHP has multiple types of errors, including fatal errors, warnings and notices. Notices tell you when your using undefined variables or deprecated functions, you can pretty much ignore them. You can change the setting so you won't see them using:

error_reporting(E_ALL ^ E_NOTICE);

Sonra tek gerçek hataları (uyarılar ve ölümcül hatalar) göreceksiniz.

More Edit
Then those variables are truly unset, try something like this before you call getOutput():

echo "<pre>";
var_dump($userInput);
var_dump($url);
//etc.
echo "</pre>";

değişkenler gerçekten ayarlanmış olup olmadığını görmek.

Bunun yerine bu deneyin:

$dataArray = array();
if(is_numeric($websiteID){
        $result = mysql_query("SELECT * FROM test WHERE web_id=$websiteID") or die(mysql_error());

        while ($row = mysql_fetch_array($result)) {
                $k = $row['kfoo'];
                $v = $row['vbar'];
                $dataArray[$k] = $v;
        }
}

Ben WebSitesiKimliği değişken etrafında'' kaldırıldı bilgilendirildiğini. Bu mysql Eğer mysql tablo oluşturma belirtilen ne olduğu, bir dize olarak değil bir int olarak tedavi anlamına gelir. Ben de WebSitesiKimliği bir numara olup olmadığını görmek için kontrol edin. Değilse, o zaman sql sorgu yapmanın hiçbir anlamı sıfır sonuç alırsınız olarak vardır. Bu sql enjeksiyon karşı korur.

Döngüler içinde tanımladığınız değişkenler döngünün sonunda imha edilir. Yani ilk süre döngü oluşturmak çıkış değişkeni döngü sonra yok demektir. Sen ise döngü dışında onları tanımlamak ve sonra döngü içinde değerleri ayarlamanız gerekir:

function getOutputSQL($websiteID,$userInput) {
 $result = mysql_query("SELECT * FROM websites WHERE websiteID=$websiteID") 
    or die(mysql_error());
  $url = "";
  $exp = "";
  $output = "";
  //... etc for all the other variables you need in the function at the end.
  while ($row = mysql_fetch_array($result)){
    $url = $row['url'];
    $exp = $row['exp'];
    $output= $row['textPrint'];
    $endUrlStart = $row['outUrlStart'];
    $endUrlEnd = $row['outURLEnd'];

    $image = $row['image'];
    $print = $row['print'];
    $post = $row['post'];

    $dataSource = $row['dataSource'];
    $dataSourceName = $row['dataSourceName'];                   

  }
  // the rest of your function...