2012-01-19 13 views
0

Notice:C:\ xampp \ htdocs \ evantchbd \ secure \ content \ right_cat_pr.phpの18行目で未定義オフセット:1行がです。私はテーブルからnews_idとcat_nameを取得したい。ここでPHPの関数が爆発するエラー

は、HTML形式である:

ここ
<?php 
include "db.php"; 
$sql = mysql_query("SELECT * FROM news_cat"); 
?> 

<form action="right_cat_pr.php" method="post" name="right_cat"> 
<table width="400" border="0" cellspacing="5" cellpadding="5"> 
<tr>  
<td>News Category Name</td> 
<td> 
<select name="cat_name"> 

<?php 
while($row = mysql_fetch_assoc($sql)) 
{ 
    $new_id = $row['news_id']; 
    $cat_name = $row['cat_name']; 
?> 
<option "<?php echo $row['news_id'] . '|' . $row['cat_name'] ?>"><?php echo 
$row['cat_name']; ?></option> 
<?php 
} 
?> 
</select>  

</td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td><input type="submit" value="Submit" name="submit"></td> 
</tr> 
</table> 
</form> 

は、プロセスのページです:

<?php 
include "db.php"; 
$row = explode('|', $_POST['cat_name']); 
$news_id = $row[0]; // cat_id 
$cat_name = $row[1];    

$query = mysql_query("INSERT INTO right_cat VALUES ('','$news_id','$cat_name')"); 
     if($query) 
     { 
     echo "Successfully Inserted your News Category<br/>"; 
     } 
     else 
     { 
     echo "Something is wrong to Upload"; 
     } 

?> 
+2

でオプション値を設定する必要がありますしかし、そこにはSQLインジェクションの脆弱性が存在します。 'INSERT INTO right_cat VALUES( ''、 '$ news_id'、 '$ cat_name')' $ news_idが 'ffff 'の場合はどうなりますか? DROP * FROM *; - '? – Seventoes

+0

@リトルボビーテーブルを参照する衝動に抵抗するためのコメントに@ Seventoes +1 :) ...のように...エラーメッセージは、ライン18に存在しない配列キーを参照していることを意味します。配列キーが存在することを100%確信しているわけではありませんが、参照する前に 'empty'または' isset'で有効であることを確認する必要があります。 – rdlowrey

+1

ありがとう@Seventoes。では、SQLインジェクションを防ぐために何をすべきですか? –

答えて

2

あなたは、あなたの質問に関連していない<option value="<?php echo $row['news_id'] . '|' . $row['cat_name'] ?>"

+0

よく、私はそれを試しています –

+0

ありがとう@xdazz、私はそれを持っています。 –