2012-09-20 47 views
1

我想顯示一些文本默認情況下值tag.I我試圖在表單值中回顯$行。但是,我收到關於未定義變量的通知。任何人都可以找出錯誤嗎?在回聲php需要幫助

<?php 
$id=$_GET['id']; 
$qry=mysql_query('SELECT * FROM pages WHERE pageid="$id"', $con); 
if(!$qry) 
{ 
die("Query Failed: ". mysql_error()); 
} 
while($row=mysql_fetch_array($qry)) 
{ 
$row=mysql_fetch_array($qry); 
} 
?> 

<div class="block2"> 
<p><b>Update Article</b></p> 
<form action="article_edited.php" method="post" enctype="multipart/form-data"  name="form1" id="form1"> 
<p>Article Id &nbsp;&nbsp;&nbsp;: 

<label for="image"></label> 
<input type="text" name="pageid" id="pageid" value="<?php echo $row['pageid']?>" /> 
</p> 
<label for="image"></label> 
<p>Image Path: 
<input type="text" name="imgpath" id="imgpath" value="<?php echo $row['imgpath'] ?>" /> 
</p> 
<p>Contents &nbsp;&nbsp;&nbsp;: 
<label for="cont"></label> 
<textarea name="contents" id="contents" cols="50" rows="5" ><?php $row['text']  ?></textarea> 
</p> 
<p align="center"> 
<input type="submit" name="Submit" id="Submit" value="Submit" /> 
</p> 
</form> 

更新#1:這是我一直在下面的教程:http://www.vdesignourweb.com/cmsphpsqlb/cms_editarticle.html

更新#2:這是我的表結構:DB info

更新#3:我剛剛發現,該表沒有索引。這可能是問題嗎?

+0

您可能希望將while語句的結束語移到使用$ row – Najzero

+0

的最後一次使用後面,但是重要的是:請注意,mysql_xx()函數已過時並且不推薦使用。你應該考慮切換到等效的'mysqli_xx()'funcs或PDO庫。 (請注意,PHP手冊已經措辭強硬的警告,這種效果) – SDC

+0

我很新的PHP,我會在code.Thanks @SDC變化。 – Ankit

回答

2

您只在while循環中定義$row。它沒有在while循環之外定義。您需要將值存儲在數組中,或者在while循環結束或在while循環期間採取行動時將值存儲到最後!

$results = array(); 

    while($row=mysql_fetch_array($qry)){ 
     $results [] = $row; 
    } 

    foreach($results as $row){ 
     echo $row['pageid']; 
    } 
+0

我試圖找到4小時的同一個例子。請給出一個例子嗎? – Ankit

+1

'$ row'在循環後定義,但是它是'false'。它被設置在循環條件內。 – mcrumley

+0

@mcrumley。 mysqli_fetch_array()會修復那個問題嗎?或其相同。 – Ankit

1

如果它是一個單一的記錄,您可以檢查是否存在記錄從查詢返回的,只是使用的

$row=mysql_fetch_array($qry);

代替

while($row=mysql_fetch_array($qry)) 
{ 
$row=mysql_fetch_array($qry); 
} 

您也可以看看到mysql_fetch_row。我會建議遠離mysql_ *,儘管它的舊的和不贊成的。

+0

是的,與你同意+1 – GBD

+0

3行將在此查詢中返回。 – Ankit

0

修改while循環,如下所示:

$array=array(); 
while($row=mysql_fetch_array($qry)) 
{ 
    $array[]=mysql_fetch_array($qry); 
} 

然後,在您的textarea,使它說

<?php echo $row['text'] //you missed the echo statement ?> 

或者,而不是<?php echo //what you want to echo ?>,你可以簡單地使用<?= //what you want to echo here ?>

+0

順便說一句,根據您選擇的術語,它看起來像您的pageid是您的網頁表的唯一標識符。如果是這樣的話,你不需要遍歷結果,因爲如果你在表中尋找一個特定的id,那隻會有一個結果。 '$ row = mysql_fetch_array($ result)'就足夠了。 – weltschmerz

+0

進行建議的更改會刪除未定義的變量,但不會給出任何輸出。 – Ankit

+0

這聽起來像聯合鍵與表列不一樣。 – weltschmerz

0

這是得到一個單一的記錄,那麼你必須使用單個

$row=mysql_fetch_array($qry); 
0

上一次while循環執行,如果沒有更多的行$row設置爲false因爲mysql_fetch_array($qry)回報false。循環後,$row['pageid']不存在,因爲$row不再是一個數組。

我不能告訴你如何解決它,因爲我不知道你在循環中要做什麼。循環後的HTML代碼是否應該爲每一行打印?

<?php while ($row=mysql_fetch_array($qry)) { ?> 
    <div class="block2"> 
    ... 
    </div> 
<?php } ?> 

如果你只想要一個結果,你應該寫查詢,以便你只能得到一個結果,並跳過while循環。

$row = mysql_fetch_array($qry); 
+0

其實,我不想在我的循環中做任何事情。我想在文本輸入框中打印由行[]返回的值。 我已經刪除了while循環,但它不作任何更改。 – Ankit

+0

所以現在你只需要'$ row = mysql_fetch_array($ qry);'?這聽起來像是數據庫列與您使用的不匹配(「pageid」,「imgpath」,「text」)或者沒有匹配的行。嘗試把'var_dump($ row);'看看'mysql_fetch_array'返回了什麼。 – mcrumley

+0

我已更新帖子。 – Ankit

0

我認爲你需要做的這個樣子,

<?php 
$id=$_GET['id']; 
$qry=mysql_query('SELECT * FROM pages WHERE pageid="$id"', $con); 
if(!$qry) 
{ 
die("Query Failed: ". mysql_error()); 
} 
while($row=mysql_fetch_array($qry)) 
{ 
    $rows[]=$row; 
} 
?> 

<div class="block2"> 
<p><b>Update Article</b></p> 
<form action="article_edited.php" method="post" enctype="multipart/form-data"  name="form1" id="form1"> 
<p>Article Id &nbsp;&nbsp;&nbsp;: 
<?php 
foreach($rows as $row){ 
?> 
<label for="image"></label> 
<input type="text" name="pageid" id="pageid" value="<?php echo $row['pageid']?>" /> 
</p> 
<label for="image"></label> 
<p>Image Path: 
<input type="text" name="imgpath" id="imgpath" value="<?php echo $row['imgpath'] ?>" /> 
</p> 
<p>Contents &nbsp;&nbsp;&nbsp;: 
<label for="cont"></label> 
<textarea name="contents" id="contents" cols="50" rows="5" ><?php $row['text']  ?></textarea> 
</p> 
<?php }?> 
<p align="center"> 
<input type="submit" name="Submit" id="Submit" value="Submit" /> 
</p> 
</form> 

我希望它可以幫助你。

+0

注意:未定義變量:陣列中的C:\瓦帕\ WWW \ XXX \ edit_article.php上線118 警告:\瓦帕\ WWW \ XXX \ edit_article.php上線118:一種在C的foreach()提供參數無效 – Ankit

+0

如果我修改這樣的代碼: '$ array [] = array(); 而($行= mysql_fetch_array($ QRY)) { $陣列[] = $行; }' 我越來越不確定指標的通知。 – Ankit

+0

什麼導致你得到$行 – Toretto