0

誰かが私が間違って書いたのか教えてもらえますか?このコードはデータベースからのデータを示していますが、送信を押すと、ページをリロードするだけで、データベース内のこれらのフィールドの更新はありません...更新クエリの変数を次のように変更します:$ _ POST ['name']

<?php

$host="localhost"; // Host name
$username="username"; // Mysql username
$password="password"; // Mysql password
$db_name="db"; // Database name
$tbl_name="test"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);

// Count table rows
$count=mysql_num_rows($result);
?>

<table width="500" border="0" cellspacing="1" cellpadding="0">
<form name="form1" method="POST" action="">
<tr>
<td>
<table width="500" border="0" cellspacing="1" cellpadding="0">

<tr>
<td align="center"><strong>Id</strong></td>
<td align="center"><strong>Name</strong></td>
<td align="center"><strong>Lastname</strong></td>
<td align="center"><strong>mid</strong></td>
</tr>

<?php
while($rows=mysql_fetch_array($result)){
    $id[]=$rows['id']; 
 ?>

<tr>
<td align="center">
<input name="id[]" type="text" id="id" value="<? echo $rows['id']; ?>">
</td>
<td align="center">
<input name="name[]" type="text" id="name" value="<? echo $rows['name']; ?>">
</td>
<td align="center">
<input name="lastname[]" type="text" id="lastname" value="<? echo $rows['lastname']; ?>">
</td>
<td align="center">
<input name="midmark[]" type="text" id="midmark" value="<? echo $rows['midmark']; ?>">
</td>
</tr>
<?
}
?>

<tr>
<td colspan="4" align="center"><input type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
</td>
</tr>
</form>
</table>

<?php
            if(isset($_POST['submit'])){
                for($i=0;$i<$count;$i++){
                $sql1=mysql_query("UPDATE $tbl_name SET name='$name[$i]', lastname='$lastname[$i]', midmark='$midmark[$i]'  WHERE id='$id[$i]' ");
                $result1=mysql_query($sql1);
                }
            }

                if(isset($result1)){
                header("location:multiple.php");
                }
                mysql_close();

?>
4

4 に答える 4

0

これを試してみてください。

if(isset($_POST['Submit']))
{
    for($i=0;$i<$count;$i++)
    {
        $sql1=mysql_query("UPDATE `".$tbl_name."` SET name='".magic($_REQUEST['name'][$i])."', lastname='".magic($_REQUEST['lastname'][$i])."', midmark='".magic($_REQUEST['midmark'][$i])."'  WHERE id='".magic($_REQUEST['id'][$i])."' ");
            $result1=mysql_query($sql1);
     }
}


function magic($value)
{
   if( get_magic_quotes_gpc() )
       $value = stripslashes( $value );
   if( function_exists( "mysql_real_escape_string" ) )
       $value = mysql_real_escape_string( $value );
   else
       $value = addslashes( $value );
   return $value;
}
于 2013-03-04T12:39:50.263 に答える
0

以下を使用して表示および入力:-

<tr>
<td align="center">
<input name="data[<? echo $rows['id']; ?>][name]" type="text" id="name" value="<? echo $rows['name']; ?>">
</td>
<td align="center">
<input name="data[<? echo $rows['id']; ?>][lastname]" type="text" id="lastname" value="<? echo $rows['lastname']; ?>">
</td>
<td align="center">
<input name="data[<? echo $rows['id']; ?>][midmark]" type="text" id="midmark" value="<? echo $rows['midmark']; ?>">
</td>
</tr>

次に、次を使用して処理します:-

<?php
        if(isset($_POST['submit']))
        {
            while(list($index,$record)=each($_POST['data']))
            {
                $sql=mysql_query("UPDATE $tbl_name SET name='".mysql_real_escape_string($record['name'])."', lastname='".mysql_real_escape_string($record['lastname'])."', midmark='".mysql_real_escape_string($record['nmidmarkame'])."  WHERE id=".intval($index));
                $result1=mysql_query($sql1);
            }
        }
?>
于 2013-03-04T12:41:57.797 に答える
0

投稿変数の設定が間違っています。

まず最初に、if ステートメント、post['submit'] は小文字です。次の形式と同じにする必要があります。

isset($_POST['Submit'])

次に、残りの投稿値を読み取り、それらを変数に格納するか、少なくとも適切に参照する必要があります。

$sql1=mysql_query("UPDATE $tbl_name SET name='$name[$i]', lastname='$lastname[$i]', midmark='$midmark[$i]'  WHERE id='$id[$i]' ");

次のようになる必要があります。

$name = $_POST['name[$i]'];
$lastname = $_POST['lastname[$i]'];

$sql1=mysql_query("UPDATE $tbl_name SET name='$name', lastname='$lastname',  ... 
于 2013-03-04T12:42:57.507 に答える
0

「.」を入れてみてください。SQL 文字列とテキスト内の変数と一重引用符を使用して、 $name[$i] の両方の部分を評価しようとしている可能性があります。

 'UPDATE '.$tbl_name.' SET name=\''.$name[$i].'    ...etc

また、テストを行って何が行われるかを確認するときは、常にクエリの前に SQL 文字列をエコーし​​ます。

于 2013-03-04T12:37:50.617 に答える