Изменить строку MYSQL в форме PHP - PullRequest
2 голосов
/ 02 августа 2011

Я делал это раньше и по какой-то причине я просто не могу заставить его работать на этот раз!Я тяну волосы за это!Поскольку ошибок нет, он просто не будет обновлять базу данных.

В основном у меня есть таблица с данными учеников в ....

ID |IMGNU |Имя |Фамилия |FBID

Давайте для примера используем строку 233.

Я могу просмотреть определенную строку, перейдя в view.php? ID = 233

Тогда это работает, но теперь яхотите иметь возможность перейти к edit.php? ID = 233, и он должен загрузить форму, в которой уже есть информация из строки 233. Затем я смогу редактировать данные в полях и отправить форму, которая изменится.информация в базе данных.

Вот что у меня уже есть.

edit.php

<?php
mysql_connect('localhost', 'admin', 'passw0rd') or die(mysql_error());
echo "Tick <p>";
mysql_select_db("students") or die(mysql_error());
echo "Tick"; 

$UID = $_GET['ID'];

$query = mysql_query("SELECT * FROM stokesley_students WHERE id = '$UID'")
or die(mysql_error());  

while($row = mysql_fetch_array($query)) {
echo "";

$firstname = $row['firstname'];
$surname = $row['surname'];
$FBID = $row['FBID'];
$IMGNU = $row['IMGNU'];


};

?>

<form action="update.php?ID=<?php echo "$UID" ?>" method="post">

IMGNU: <input type="text" name="ud_img" value="<?php echo "$IMGNU" ?>"><br>

First Name: <input type="text" name="ud_firstname" value="<?php echo "$firstname" ?>"><br>

Last Name: <input type="text" name="ud_surname" value="<?php echo "$surname" ?>"><br>

FB: <input type="text" name="ud_FBID" value="<?php echo "$FBID" ?>"><br>

<input type="Submit">
</form>

А вот и обновление.php

<

?php

$ud_ID = $_GET["ID"];

$ud_firstname = $_POST["ud_firstname"];
$ud_surname = $_POST["ud_surname"];
$ud_FBID = $_POST["ud_FBID"];
$ud_IMG = $_POST["ud_IMG"];

mysql_connect('localhost', 'admin', 'passw0rd') or die(mysql_error());
echo "MySQL Connection Established! <br>";

mysql_select_db("students") or die(mysql_error());
echo "Database Found! <br>";


$query="UPDATE * stokesley_students SET firstname = '$ud_firstname', surname = '$ud_surname', 
FBID = '$ud_FBID' WHERE ID ='$ud_IMG'";

mysql_query($query);

echo "<p>Record Updated<p>";

mysql_close();
?>

Любые идеи будут высоко оценены, Мэйби, я просто упускаю что-то глупое?

Спасибо, Алекс

Ответы [ 3 ]

8 голосов
/ 02 августа 2011

edit.php - с некоторыми изменениями

<?php
mysql_connect('localhost', 'admin', 'passw0rd') or die(mysql_error());
mysql_select_db("students") or die(mysql_error());

$UID = (int)$_GET['ID'];
$query = mysql_query("SELECT * FROM stokesley_students WHERE id = '$UID'") or die(mysql_error());

if(mysql_num_rows($query)>=1){
    while($row = mysql_fetch_array($query)) {
        $firstname = $row['firstname'];
        $surname = $row['surname'];
        $FBID = $row['FBID'];
        $IMGNU = $row['IMGNU'];
    }
?>
<form action="update.php" method="post">
<input type="hidden" name="ID" value="<?=$UID;?>">
IMGNU: <input type="text" name="ud_img" value="<?=$IMGNU;?>"><br>
First Name: <input type="text" name="ud_firstname" value="<?=$firstname?>"><br>
Last Name: <input type="text" name="ud_surname" value="<?=$surname?>"><br>
FB: <input type="text" name="ud_FBID" value="<?=$FBID?>"><br>
<input type="Submit">
</form>
<?php
}else{
    echo 'No entry found. <a href="javascript:history.back()">Go back</a>';
}
?>

update.php (кроме звездочки, ваш запрос также совпадал с ID с переменной $ud_IMG)

    <?php
    mysql_connect('localhost', 'admin', 'passw0rd') or die(mysql_error());
    mysql_select_db("students") or die(mysql_error());

    $ud_ID = (int)$_POST["ID"];

    $ud_firstname = mysql_real_escape_string($_POST["ud_firstname"]);
    $ud_surname = mysql_real_escape_string($_POST["ud_surname"]);
    $ud_FBID = mysql_real_escape_string($_POST["ud_FBID"]);
    $ud_IMG = mysql_real_escape_string($_POST["ud_IMG"]);


    $query="UPDATE stokesley_students
            SET firstname = '$ud_firstname', surname = '$ud_surname', FBID = '$ud_FBID' 
            WHERE ID='$ud_ID'";


mysql_query($query)or die(mysql_error());
if(mysql_affected_rows()>=1){
    echo "<p>($ud_ID) Record Updated<p>";
}else{
    echo "<p>($ud_ID) Not Updated<p>";
}
?>
4 голосов
/ 02 августа 2011
"UPDATE * stokesley_students SET firstname = '$ud_firstname', surname = '$ud_surname', 
FBID = '$ud_FBID' WHERE ID ='$ud_IMG'"

Этот запрос неверен, удалите звездочку. Кроме того, вы не знаете, есть ли ошибка, потому что вы не проверяете тип возврата mysql_query или используете mysql_error.

1 голос
/ 02 августа 2011

Неправильный запрос на обновление. Вы должны указать, какая таблица, какие поля, в частности. Звездочка используется только в операторах выбора.

Также было бы полезно, если бы вы проверили, был ли запрос успешным. Посмотрите ниже. Я немного переписал твой код. Я также позволил, чтобы ID пришел из POST или GET с помощью REQUEST. И я удалил вызов mysql_close (), поскольку он совершенно не нужен, так как он будет закрыт, когда скрипт прекратит работу.

<?php
$ud_ID = $_REQUEST["ID"];
$ud_firstname = $_POST["ud_firstname"];
$ud_surname = $_POST["ud_surname"];
$ud_FBID = $_POST["ud_FBID"];
$ud_IMG = $_POST["ud_IMG"];

mysql_connect('localhost', 'admin', 'passw0rd') or die(mysql_error());
echo "MySQL Connection Established! <br>";

mysql_select_db("students") or die(mysql_error());
echo "Database Found! <br>";

$query = "UPDATE stokesley_students SET firstname = '$ud_firstname', surname = '$ud_surname', 
FBID = '$ud_FBID' WHERE ID = '$ud_ID'";

$res = mysql_query($query);

if ($res)
  echo "<p>Record Updated<p>";
else
  echo "Problem updating record. MySQL Error: " . mysql_error();
?>

Краткий справочник по функции PHP mysql_query: http://nl.php.net/manual/en/function.mysql-query.php

Кроме того, держу пари, что вы хотели бы получить несколько хороших учебных пособий, которые помогут вам изучить PHP и MySQL. Проверить этот сайт: http://net.tutsplus.com/category/tutorials/php/

...