4

MySQLデータベース内の個々の行を編集できるようにするPHPスクリプトでイライラする問題が発生しています。

これは、データベースのすべての行が表示されるファイルです。想定どおりに機能します。

<table cellpadding="10">
<tr>
<td>ID</td>
<td>First Name</td>
<td>Last Name</td>
<td>E-mail</td>
<td>Phone</td>
</tr>

<?php

$username="username here";
$password="password here";
$database="database name here";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM students";
$result=mysql_query($query);
mysql_close();

while ($row=mysql_fetch_array($result)){
echo ("<tr><td>$row[id]</td>");
echo ("<td>$row[first]</td>");
echo ("<td>$row[last]</td>");
echo ("<td>$row[email]</td>");
echo ("<td>$row[phone]</td>");
echo ("<td><a href=\"StudentEdit.php?id=$row[id]\">Edit</a></td></tr>");
}
echo "</table>";

?>

ご覧のとおり、各行には「編集」リンクがあり、ユーザーはその個々の学生のデータを編集できます。ここに、StudentEdit.phpがあります。

<?php

$username="username";
$password="password";
$database="database";

mysql_connect(localhost,$username,$password);

$student_id = $_GET[id]; 
$query = "SELECT * FROM students WHERE id = '$student_id'"; 
$result = mysql_query($query);
$row = mysql_fetch_array($result);
mysql_close();
?>

<form method="post" action="EditStudentData.php" />

<table>

<tr>
<td><input type="hidden" name="id" value="<? echo "$row[id]" ?>"></td>
</tr>

<tr>
<td>First Name:</td>
<td><input type="text" name="first" value="<? echo "$row[first]" ?>"></td>
</tr>

<tr>
<td>Last Name:</td>
<td><input type="text" name="last" value="<? echo "$row[last]" ?>"></td>
</tr>

<tr>
<td>Phone Number:</td>
<td><input type="text" name="phone" value="<? echo "$row[phone]" ?>"></td>
</tr>

<tr>
<td>E-mail:</td>
<td><input type="text" name="email" value="<?echo "$row[email]" ?>"></td>
</tr>

</table>

</form>

ただし、これを実行すると、次のエラーメッセージが表示されます。

警告:mysql_fetch_array():指定された引数は12行目の/home4/lukaspl1/public_html/StudentEdit.phpにある有効なMySQL結果リソースではありません

何が悪いのか、そしてそれを修正する方法はありますか?

前もって感謝します!

4

9 に答える 9

3

ここからmysql_closeを削除します

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM students";
$result=mysql_query($query);
mysql_close();

コードはmysql_connect(localhost、$ username、$ password);である必要があります。

@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM students";
$result=mysql_query($query);

さらに、キーベースの結果セットのみを使用します。mysql_fetch_assocを使用するだけです。また、$ row[id]..の代わりに$row['id']を使用することをお勧めします。

于 2012-07-16T06:49:51.760 に答える
2

StudentEdit.php:@mysql_select_db($database) or die( "Unable to select database");クエリを実行する前に電話をかけるのを忘れました

于 2012-07-16T06:57:56.170 に答える
2

コードのこの部分は間違っています:

$student_id = $_GET[id];

正しいコードは

$student_id = $_GET['id'];

Expertsnote.comからのコード

于 2015-02-17T13:38:52.587 に答える
1

試す...

echo ("<td><a href=\"StudentEdit.php?id=".$row['id']."\">Edit</a></td></tr>");

それ以外の

echo ("<td><a href=\"StudentEdit.php?id=$row[id]\">Edit</a></td></tr>");
于 2012-07-16T06:56:37.183 に答える
1

このコードがありませんでした

$select_db = mysql_select_db("$db_name");
if (!$select_db) {echo "Error Selecting Database";}
于 2015-02-17T12:17:57.867 に答える
1

これは、詳細を動的に編集するためのタラです

<?php

    include('db.php');

        $id=$_REQUEST['id'];
         $query="SELECT * FROM `camera details` WHERE id='".$id."'";
        $result=mysqli_query($db,$query) or die(mysqli_error());
        $row1=mysqli_fetch_assoc($result);


    if(isset($_POST['submit'])&&(isset($_POST['new'])&&($_POST['new'])==1))
    {
            $id=$_REQUEST['id'];

        foreach($_POST as $key=>$values)
        {
            if($key!="submit"){

            $names[]=$key;
            $val[]= "'".$values."'";

            if($key!="new"){
            $k[] = "`".$key."` = '".$values."'";
            }
            }
        }
        $output=implode(",",(array)($k));
        //$v=implode(",",(array)($val));

        // `name` = 'san'

        $query="UPDATE `camera details` SET $output WHERE id='".$id."'";

        $output=mysqli_query($db,$query) or die(mysqli_error($db));
        if($output)
        {
            header('location:cameralist.php');
        }
    }
    else{
        ?>
于 2018-01-19T06:56:09.680 に答える
0

StudentEdit.phpでこれを行うことをお勧めします

$student_id = mysql_real_escape_string($_GET[id]); 
$query = "SELECT * FROM students WHERE id = '$student_id'"; 
$result = mysql_query($query) or die(mysql_error() . ' ' . $query);
$row = mysql_fetch_array($result);
mysql_close();

ここで変更した2つのことは、最初にURLで渡されるデータをエスケープすることであり、次に追加or die(mysql_error() . ' ' . $query);しました。sqlステートメントで問題が発生した場合は、エラーが表示されるはずです。そこの。

于 2012-07-16T06:50:58.937 に答える
0

私には正しくないように見えるのは、データベースから取得した値を表示する方法です。

<input type="hidden" name="id" value="<? echo "$row[id]" ?>">

そのはず

<input type="hidden" name="id" value="<?php echo $row['id']; ?>">
于 2012-07-16T06:51:16.673 に答える
0

このコードは、オプションを追加、検索、編集、および削除するためのオプションを提供します。1つのコードですべてのオプションが表示される可能性があると考えました。

        $searchedUsername = "";
        $searchedEmail = "";
    //registration (Add) function   
        if ( isset($_POST['stdregister'])){

            $username = $_POST['stdusername'];
            $password = $_POST['stdpassword'];
            $email = $_POST['stdemail'];
            $hashedPassword = md5($password);

            $connection = mysqli_connect("localhost","root","","std");
            $query = "INSERT INTO student VALUES ('$username','$hashedPassword','$email')";
            if ( mysqli_query($connection,$query) == 1 ){
                echo "Successfully saved";
            }
            else{
                echo "<p style='color: #f00;'>There is an error</p>";
            }
            mysqli_close($connection);
        }

    //delete function   
        if ( isset($_POST['stddelete'])){
            $username = $_POST['stddelusername'];
            $connection = mysqli_connect("localhost","root","","std");
            $query = "DELETE FROM student WHERE username LIKE '$username'";
            mysqli_query($connection,$query);
            echo mysqli_error($connection);

            mysqli_close($connection);
        }
    //update function   
        if ( isset($_POST['stdupdate'])){
            $username = $_POST['stdusername'];
            $stdpass = md5($_POST['stdpassword']);
            $stdemail = $_POST['stdemail'];
            $connection = mysqli_connect("localhost","root","","std");
            $query = "UPDATE student SET password='$stdpass', email='$stdemail' WHERE username LIKE '$username'";
            mysqli_query($connection,$query);
            echo mysqli_error($connection);
            mysqli_close($connection);
        }

        if ( isset($_POST['stdsearch']) ){
            $searchUsername = $_POST['stdeditusername'];
            $connection = mysqli_connect("localhost","root","","std");
            $query = "SELECT * FROM student WHERE username LIKE '$searchUsername' ";
            $result = mysqli_query($connection, $query);
            while( $row = mysqli_fetch_array($result) ){
                $searchedUsername = $row['username'];
                $searchedEmail = $row['email'];
            }
        }

    ?>
    <html>
        <head>


        </head>
        <body>
            <h1>Student Registration</h1>
            <form name="stdregistration" action="forms.php" method="post">
                <label>Username :</label>
                <input name="stdusername" required="required" type="text" /><br /><br />
                <label>Password :</label>
                <input name="stdpassword" type="password" /><br /><br />
                <label>E-mail :</label>
                <input name="stdemail" type="email" /><br /><br />
                <input name="stdregister" type="submit" value="Save" />
            </form>

            <h2>Delete Students</h2>
            <form name="stddeletion" action="forms.php" method="post">
                <label>Select the Username :</label>
                    <select name="stddelusername" required>
                    <option value="">Select One</option>
    <?php
        $connection2 = mysqli_connect("localhost","root","","std");
        $query2 = "SELECT username FROM student";
        $result = mysqli_query($connection2,$query2);
        while( $row = mysqli_fetch_array($result) ){
            echo "<option value='".$row['username']."'>".$row['username']."</option>";
        }
        mysqli_close($connection2);

    ?>          


                </select>
                <input name="stddelete" type="submit" value="Delete" />
            </form>

            <h2>Edit Students</h2>
            <form name="stdedition" action="forms.php" method="post">
                <label>Select the Username :</label>
                    <select name="stdeditusername" required>
                    <option value="">Select One</option>
    <?php
        $connection2 = mysqli_connect("localhost","root","","std");
        $query2 = "SELECT username FROM student";
        $result = mysqli_query($connection2,$query2);
        while( $row = mysqli_fetch_array($result) ){
            echo "<option value='".$row['username']."'>".$row['username']."</option>";
        }
        mysqli_close($connection2);

    ?>          
                </select>
                <input name="stdsearch" type="submit" value="Search" />
            </form>

            <form name="stdedit" action="forms.php" method="post">
                <label>Username :</label>
                <input name="stdusername" required="required" type="text" readonly value="<?php echo $searchedUsername; ?>" /><br /><br />
                <label>Password :</label>
                <input name="stdpassword" type="password" /><br /><br />
                <label>E-mail :</label>
                <input name="stdemail" type="email" value="<?php echo $searchedEmail; ?>" /><br /><br />
                <input name="stdupdate" type="submit" value="Update" />
            </form>
        </body>
    </html>
于 2018-10-09T16:11:41.577 に答える