0

出力をエコーすると、目的の更新された値が表示されます。しかし、データベースを更新するために同じ値が渡されると、update ステートメントは何もしません。

コードの部分は

if (empty($_POST) === false)
{
    $fname= $_POST['fname'];
    $srno=  $_POST['SRNO'];
    echo $fname.' and'. $srno;

    mysql_query('update names set fname="$fname" where SRNO="$srno"');          
}

そして完全なコードは

<!DOCTYPE html>
<html>
    <head>
        <title>List of users</title>
    </head>
<body>
    <?php
        mysql_connect("localhost","root","") or die (mysql_error());
        mysql_select_db("list") or die (mysql_error());

        if (empty($_POST) === false)
        {
            $fname= $_POST['fname'];
            $srno=  $_POST['SRNO'];
            echo $fname.' and'. $srno;

            mysql_query('update names set fname="$fname" where SRNO="$srno"');          
        }


        if(isset($_GET['edit']))
        {
            $getedit=mysql_query('SELECT SRNO, fname, lname, phone, email from names where SRNO='.mysql_real_escape_string((int)$_GET['edit']));
            while ($get_row=mysql_fetch_assoc($getedit))
                {
                    echo '<form method="POST" action="">';
                    echo 'Sr. No: '.$get_row['SRNO'].'<br />';
                    echo 'Sr.No:<input type="text" value='.$get_row['SRNO'].' name="SRNO" readonly="readonly">';
                    echo 'First Name: <input type="text" value='.$get_row['fname'].' name="fname"><br />';
                    echo '<input type="submit" name="submit" value="save">';
                    echo '</form>';                                 
                }   

        }

        $get=mysql_query('SELECT  SRNO, fname, lname, email, phone, address, comments from names ORDER BY SRNO ASC');

        if (mysql_num_rows($get)==0)
        {
            echo 'There are no entries';
        }
            else
        {
            echo '<table border=0>';
            echo'<tr><th>Sr. No</th><th>First Name</th><th>Last Name</th><th>Phone No</th><th>E-mail</th><th>Modify</th></tr>';     
            while($get_row=mysql_fetch_assoc($get))
                {
                    echo '<tr><td>'.$get_row['SRNO'].'</td><td>'.$get_row['fname'].'</td><td>'.$get_row['lname'].'</td><td>'.$get_row['phone'].'</td><td>'.$get_row['email'].'</td><td><a href="index.php?edit='.$get_row['SRNO'].'">Edit</a></td></tr>';

                }
            echo '</table>';
        }       
    ?>

</body> 
</html>
4

3 に答える 3

1

変数名は、一重引用符内でその値に置き換えられません。これを試して:

update names set fname="'.$fname.'" where SRNO="'.$srno.'"
于 2013-03-10T20:15:04.773 に答える
0


これを試してみてください、それはあなたを助けるかもしれません、

<!DOCTYPE html>
<html>
 <head>
    <title>List of users</title>
</head>
<body>
<?php
    mysql_connect("localhost","root","") or die (mysql_error());
    mysql_select_db("list") or die (mysql_error());

    if (isset($_POST['fname']))
    {
        $fname= $_POST['fname'];
        $srno=  $_POST['SRNO'];
        echo $fname.' and'. $srno;

        mysql_query("update `names` set fname='$fname' where SRNO='$srno'");          
    }


    if(isset($_GET['edit']))
    {
        $getedit=mysql_query('SELECT SRNO, fname, lname, phone, email from names where     SRNO='.mysql_real_escape_string((int)$_GET['edit']));
        while ($get_row=mysql_fetch_assoc($getedit))
            {
                echo '<form method="POST" action="">';
                echo 'Sr. No: '.$get_row['SRNO'].'<br />';
                echo 'Sr.No:<input type="text" value='.$get_row['SRNO'].' name="SRNO" readonly="readonly">';
                echo 'First Name: <input type="text" value='.$get_row['fname'].' name="fname"><br />';
                echo '<input type="submit" name="submit" value="save">';
                echo '</form>';                                 
            }   

    }

    $get=mysql_query('SELECT  SRNO, fname, lname, email, phone, address, comments from names ORDER BY SRNO ASC');

    if (mysql_num_rows($get)==0)
    {
        echo 'There are no entries';
    }
        else
    {
        echo '<table border=0>';
        echo'<tr><th>Sr. No</th><th>First Name</th><th>Last Name</th><th>Phone No</th><th>E-mail</th>   <th>Modify</th></tr>';     
        while($get_row=mysql_fetch_assoc($get))
            {
                echo '<tr><td>'.$get_row['SRNO'].'</td><td>'.$get_row['fname'].'</td><td>'.$get_row['lname'].'</td><td>'.$get_row['phone'].'</td><td>'.$get_row['email'].'</td><td><a href="index.php?edit='.$get_row['SRNO'].'">Edit</a></td></tr>';

            }
        echo '</table>';
    }       
?>

于 2013-03-10T20:19:20.463 に答える
0

問題が発生した場合は、クエリをエコーアウトして、クエリをコピーして mysql クライアントに貼り付け、エラーをテストできるようにすることをお勧めします。

次のように変更してみてください。

$query = "update names set fname='$fname' where SRNO='$srno'";
echo $query;
mysql_query($query);

クエリでも一重引用符を使用することをお勧めします (上記の例のように)。MySQL が二重引用符をどの程度うまく処理するか、またはまったく処理するかどうかはわかりません。私はいつも一重引用符を使うのを習慣にしてきました。多分それは単なる個人的な好みです。

于 2013-03-10T20:19:24.960 に答える