2013-03-17 6 views
1

이것은 3 일 동안 나를 괴롭혔다. 나는 이것에 익숙하지 않고 내 머리를 둥글게하려고한다. 3 개의 필드가있는 양식이 있습니다. 이름, 성, 표. while 루프를 사용하여 mysql 테이블에서 테이블을 생성했다. 나는 텍스트 상자를 사용했고 루프를 사용하여 'ID'다음에 텍스트 상자를 호출하여 각 텍스트 상자의 이름을 고유하게 지정했습니다. 그런 다음 사용자가 방금 입력 한 값으로 '표시'열을 업데이트 할 두 번째 페이지로 값을 보내려면 게시 메서드를 사용하고 있습니다. 여기가 내 문제를 찾는 위치입니다!While 루프 PHP를 사용하여 mysql 데이터베이스 업데이트

이것은 초기 페이지입니다.

<html> 
<head><title>Please Enter Your Surname</title></head> 
<body> 
<center> 
<h2><font color=blue>Please Enter Your Surname</font></h2><p> 

<form action="insert.php" method="POST"> 

<?php 

$db = mysql_connect("localhost","root",""); 
if (!$db) 
{ 
    do_error("Could not connect to the server"); 
} 

mysql_select_db("session6",$db)or do_error("Could not connect to the database"); 


$result = mysql_query("SELECT * FROM members ORDER BY id",$db); 


$rows=mysql_num_rows($result); 


if(!$rows) 
{ 
    do_error("No results found"); 
} 
else 
{ 
    echo "<table border=3 cellspacing=1 cellpadding=1 
    align=center bgcolor=lightblue>\n"; 
    echo "<caption><h2><font color=blue> Members Details  
      </font></h2></caption>\n"; 
    echo "<tr><th>Member Id</th><th>Firstname</th><th>Mark</th></tr>\n"; 
    while ($row = mysql_fetch_array($result)) 
    { 

     echo "<tr>"; 
     echo "<td strong>" . $row['Id'] . "</td>"; 
     echo "<td strong>" . $row['Firstname'] . "</td>";?> 
     <td strong><input type="text" name="<?php echo $row['Id']; ?>" size="20"></td> 
     <tr> 
     <?php 



    } 
    ?><input type="hidden" name="no_of_rows" value="<?php echo $rows; ?>"> 
    <?php 
    echo "</table>\n"; 
} 

mysql_close($db) or do_error("Could not close connection"); 

function do_error($error) 
{ 
    echo $error; 
    die(); 
} 

?> 
<input type="submit" value="Search"> 
<input type="reset" value="Reset"> 

</form> 

</body></html> 
` 

다음 업데이트가 나는 문제가있을 것 같다 곳이다 여기 이루어집니다 : 나는 $ _POST를 에코 때

<html> 
<body> 
<?php 
$db = mysql_connect("localhost","root",""); 
if (!$db) 
{ 
    do_error("Could not connect to the server"); 
} 

mysql_select_db("marks",$db)or do_error("Could not connect to the database"); 

$i=1; 
while ($i <= $_POST["no_of_rows"])// or $_POST["No_of_Rows"] from form 
{ 

    $insertsql = "UPDATE members SET mark = " . $_POST[$i] . " WHERE Id = " . $row['Id'] . ";"; 
    echo $_POST['$i']; 
    $i++; 

} 

?> 

</body></html> 

을 [$ 내가 ']가 올바른 값을 표시하지만 업데이트하지 않습니다 DB와 나는 나의 휴대용 개인 컴퓨터를 큰 상자에 던지기 위해 준비가되어 있지 않다! 하아! 나는 그것이 어리석은 무엇인가 될 수있는 prob 인 것을 안다. 나는 단지 무엇을 볼 수 없다. 그래서 어떤 도움이라도 인정 될 것이다.

+0

'mysql_ *'을 (를) 버리고 'PDO'를 (를) 사용 중지했습니다. – Houssni

답변

1

업데이트 쿼리에 작은 따옴표가 없습니다. 이 도움이 될 것이다 : 당신은 또한 마지막으로 당신이 사용되지 않습니다 MySQL의 PHP는 명령을 사용하는 업데이트

mysql_query 쿼리 명령을 실행하지 않는

$insertsql = "UPDATE `members` SET `mark` = '" . $_POST[$i] . "' WHERE `Id` = '" . $row['Id'] . "' ;"; 

. mysqli 또는 pdo를 대신 사용하십시오. 및

0

문제는 '$ I'아마 $ _POST

echo $_POST["$i"]; 
0

필요가 없습니다에 키를 밤은있는, 여기에 작은 따옴표입니다 문자로 강제 SQL 주입을 방지하기 위해 쿼리에서 데이터를 탈출하는 것을 잊지 마세요 변수를 사용할 때 따옴표 사용 : $ _POST [$ id];

관련 문제