0

値タグにデフォルトでテキストを表示しようとしています。フォーム値で $row をエコーし​​ようとしています。しかし、私は未定義の変数について通知を受けています。誰でもエラーを理解できますか?

<?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:これは私のテーブル構造です:データベース情報

更新 #3: テーブルにインデックスがないことがわかりました。これが問題になる可能性はありますか?

4

6 に答える 6

2

$rowwhile ループで定義しているだけです。while ループの外では定義されていません。while ループが終了した後、または while ループ中に動作するように、値を配列または何かに格納する必要があります。

    $results = array();

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

    foreach($results as $row){
        echo $row['pageid'];
    }
于 2012-09-20T12:49:12.263 に答える
1

単一のレコードの場合、クエリから返されたレコードがあるかどうかを確認して、使用することができます

$row=mysql_fetch_array($qry);

それ以外の

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

を調べることもできますmysql_fetch_row。ただし、古くて推奨されていない mysql_* から離れることをお勧めします。

于 2012-09-20T12:51:43.150 に答える
0

whileループが最後に実行されたときは、これ以上行がない場合に戻るため、$rowに設定されます。ループの後、は配列ではないため存在しません。falsemysql_fetch_array($qry)false$row['pageid']$row

ループで何をしようとしているのかわからないため、修正方法を教えることはできません。ループの後の HTML コードを行ごとに出力する必要がありますか?

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

結果が 1 つだけ必要な場合は、結果が 1 つだけ取得され、whileループをスキップするようにクエリを作成する必要があります。

$row = mysql_fetch_array($qry);
于 2012-09-20T13:23:48.240 に答える
0

while ループを次のように変更します。

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

次に、テキストエリアで、それを言うようにします

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

または、代わりに<?php echo //what you want to echo ?>単に使用できます<?= //what you want to echo here ?>

于 2012-09-20T12:52:42.623 に答える
0

単一のレコードを取得している場合は、単一を使用する必要があります

   $row=mysql_fetch_array($qry);
于 2012-09-20T12:52:51.200 に答える
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>

お役に立てば幸いです。

于 2012-09-20T13:31:40.310 に答える