neden veri şeklinde dispaly değil mi?

4 Cevap php

Ben verileri görüntülemek için bir kod oluşturduk. verileri formda göstermek değil ...

kodu:

<?php //======================================================================================================================= PROCESS DATA ======================================================= START. 
include "connectioncomplaint.php";
?>

<?php
$subject = $_GET['type'];
$comment = $_GET['id'];

//echo 'test : ' . $name;
//Tarik data dari sini 
$queryDetail = " SELECT * FROM campuscomplaint " . " WHERE subject = '" . $subject . "' AND comment = '" . $comment . "' ";
//echo 'QUERY DETAIL :' . $queryDetail . '<br>' ;

$resultDetail = mysql_query($queryDetail);
//echo 'RESULT DETAIL :' . $resultDetail + 0 . '<br>' ;

$detail = mysql_fetch_array($resultDetail);

//echo $detail . '<br>';
//echo 'detail subject is : ' . $detail['subject'] . '<br>';
//echo 'detail comment is : ' . $detail['comment'] . '<br>';
//echo $detail[$x] . '<br>';

?>

form için kod:

<tr>
                  <td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5">From:</td>
                  <td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><input type="text" name="to" 
size="40" maxlength="80" value="<?php echo $detail['userid']; ?>"/></td>
                </tr>
                <tr>
                  <td width="38%" bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5">Subject:</td>
                  <td width="62%" bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><input type="text" name="subject" size="40" maxlength="80" value="<?php echo $detail['subject']; ?>"/></td>
                </tr>
                <tr>
                  <td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5">Comment:</td>
                  <td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><textarea name="comment" rows="5" cols="40"><?php echo $detail['message']; ?></textarea></td>
                </tr>
                <tr>
                  <td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><p>&nbsp;</p>
                      <p>&nbsp;</p></td>
                  <td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><input type="submit" name="submit" value="Submit Comment" onClick="return OnButton1();"/></td>
                </tr>

4 Cevap

Yapmak için bu değiştirin:

$resulDetail = mysql_query($queryDetail);

karşı

$resulDetail = mysql_query($queryDetail) or die(mysql_error());

ve almak hata sonrası.

Kodunuzu göz önüne alındığında:

$resulDetail = mysql_query($queryDetail);
$detail = mysql_fetch_array($resultDetail);

Bu tür bir hata mysql_query fails -- and return false ; which means $resultDetail bir kaynak değildir yaşanma olasılığı olduğunu ve mysql_fetch_array bir parametre olarak kullanılamaz.


This means you should test if $resultDetail is not false before calling mysql_fetch_array :

$resulDetail = mysql_query($queryDetail);
if ($resulDetail === false) {
    // while developping, you can echo the error message
    // in production, you should log it to a file
    echo mysql_error();
} else {
    // query has been run OK
    // => You can use the result :
    $detail = mysql_fetch_array($resultDetail);
    // ...
}


Humph : looking closer at your code, you have this :

$resulDetail = mysql_query($queryDetail);
$detail = mysql_fetch_array($resultDetail);

In the first line, the result of mysql_query is stored to $resulDetail, with no t !
And, in the second line, you are using $resultDetail, with a t !

örneğin, mysql_fetch_array yok için kullanılan değişken - geçerli bir kaynak - dolayısıyla null olarak kabul edilir.


As a sidenote, even if this is not the cause of the problem in this specific case, but you are building your query like this :

$subject = $_GET['type'];
$comment = $_GET['id'];
$queryDetail = " SELECT * FROM campuscomplaint " . " WHERE subject = '" . $subject . "' AND comment = '" . $comment . "' ";

Eğer SQL sorgusu enjekte önce verileri kaçan değil demektir - kötü ve yol açabilir SQL injections (which can cause an error while executing the query)

Sen SQL sorgusu içine enjekte önce bu dizeleri üzerine mysql_real_escape_string kullanmalısınız:

$subject = mysql_real_escape_string($_GET['type']);
$comment = mysql_real_escape_string($_GET['id']);
$queryDetail = " SELECT * FROM campuscomplaint " . " WHERE subject = '" . $subject . "' AND comment = '" . $comment . "' ";

Sizin $ resultDetail bir kaynak değildir, ve mysql_fetch_array bir parametre () olarak kullanılamaz. benim uygulamadan - mysql "sql" ile tüm sorguları test! u orada bir hata hakkında daha ayrıntılı bilgi bulabilirsiniz!

Bir önceki cevapta yorumladı shimaTun, "verilen argüman geçerli MySQL result resource değildir". Bu sorgu geçersiz olduğunu ve mysql_query (), bir SONUÇ kaynak, bir mysql HATA kaynak değil dönüyor demektir. Aşağıdaki kodunuzu değiştirin:

$resultDetail = mysql_query($queryDetail);
if (mysql_error()) {
   die("MySQL error: " . mysql_error());
}

ve komut dosyasını yeniden çalıştırın. Bu sorgu neden olduğunu tam hata tükürmek olacaktır.

Bu arada, tüm ne "borderColor" ile bulunuyor ve "bgcolor" senin td etiketleri bağlıyor? "Sınıf" var beri belli, CSS kullanarak konum de bağlıyor. Neden stil sayfası ile tablo hücrelerini styling tarafından bant genişliği birkaç kilobayt tasarruf olmaz? Ayrıca okumak için HTML çok daha kolay hale getirir.

Ayrıca HTML oluşturulur nasıl düzeltmek isteyeceksiniz. Eğer forma ekleme konum verileri bir çift tırnak ya da bir etiket içeren durum düşünün:

<textarea name="comment" rows="5" cols="40"><?php echo $detail['message']; ?></textarea>

$detail['message'] benziyordu " Merhaba, ben HTML ile karıştırmasını, senin etiketlerinin dışında değilim" ne. Oluşturulan html gibi görünecektir:

<textarea name="comment" rows="5" cols="40">Hello, </textarea> I'm outside your tags, messing with your HTML</textarea>

ve şimdi bölümü içeren dışarı kırık çünkü comment, sadece Hello, indirgenir, gitti <textarea>. Form verileri (genellikle kötü bir fikir) önceden kaçtı saklandığı sürece, gerektiği bu gibi htmlspecialchars'dan () fonksiyonu aracılığıyla forma o DAİMA çıktı:

<textarea><?php echo htmlspecialchars($detail['message']) ?></textarea>

güzel <,>, &, 've "kendi karakter varlığı eşdeğerleri tercüme edecek.