Не хочет обновлять данные в БД

196
24 августа 2017, 22:06
<?php
header("Content-Type:text/html; charset=utf-8");
require_once 'login.php';
$db_server=mysql_connect($db_hostname,$db_username,$db_password);
if(!$db_server) die ("Can't connect to database: ".mysql_error());
mysql_select_db($db_database) or die ("Can't change database: ".mysql_error());
if(isset($_POST['id'])&&isset($_POST['family'])&&isset($_POST['name'])&&isset($_POST['age']))
{
    $family=get_post('family');
    $name=get_post('name');
    $age=get_post('age');
    $query="INSERT INTO cats(id,family,name,age) VALUES"."(NULL,'$family','$name','$age')";
    if(!mysql_query($query,$db_server)) die ("Can't write: ".mysql_error());
}
if(isset($_POST['delete'])&& isset($_POST['id'])){
    $id=get_post('id');
    $query="DELETE FROM cats WHERE id='$id'";
    if(!mysql_query($query,$db_server)) echo "can't delete record: ".mysql_error();
}
if (isset($_POST['rename'])&&isset($_POST['id'])&&isset($_POST['new_name']))
{
    $new_name=get_post('new_name');
    $query="UPDATE cats SET name='$new_name' WHERE id='$id'";//ТУТ где-то ошибка. Имя не обновляется.=С
    $result=mysql_query($query);
    if(!$result) echo "Can't rename record: ".mysql_error();
}
echo<<<_END
<form action="cats_insert.php" method="post"><pre>
<input type="hidden" name="id" values="NULL">
FAMILY: <input type="text" name="family">
NAME: <input type="text" name="name">
AGE: <input type="text" name="age">
<input type="submit" value="Добавить кису"><br>
</pre></form>
_END;
$query="SELECT id,family,name,age FROM cats";
$result=mysql_query($query);
if(!$result) die ("can't acces: ".mysql_error());
$rows=mysql_num_rows($result);
for ($i=0; $i <$rows ; $i++) { 
    # code...
    $row=mysql_fetch_row($result);
    echo<<<_END
    <pre>
    ID $row[0]
    Family $row[1]
    Name $row[2]
    Age $row[3]
    </pre>
    </pre>
<form action="cats_insert.php" method ="post">
<input type="hidden" name="delete" value="yes">
<input type="hidden" name="id" value="$row[0]">
<input type="submit" value="Удалить запись"></form><br>
<form action="cats_insert.php" method ="post">
<input type="hidden" name="rename" value="yes">
<input type="hidden" name="id" value="$row[0]">
<input type="text" name="new_name">
<input type="submit" value="Переименовать"></form>
_END;
}
mysql_close($db_server);
function get_post($var)
{
    return mysql_real_escape_string($_POST[$var]);
}

и вот здесь не хочет обновлять имя. Просто сбрасывается и всё остается прежним.

if (isset($_POST['rename'])&&isset($_POST['id'])&&isset($_POST['new_name']))
{
    $new_name=get_post('new_name');
    $query="UPDATE cats SET name='$new_name' WHERE id='$id'";//ТУТ где-то ошибка. Имя не обновляется.=С
    $result=mysql_query($query);
    if(!$result) echo "Can't rename record: ".mysql_error();
}

Подозреваю, что ошибка в синтаксисе. Подскажите, как правильно?

Answer 1

Попробуйте:

$query = "UPDATE cats SET name='" . $new_name . "' WHERE id='" . $id . "'";
$result = mysql_query($query) or die(mysql_error());

З.Ы. переходите на mysqli или PDO mySQL

READ ALSO
Как поставить картинку фоном на сайте php+css? [требует правки]

Как поставить картинку фоном на сайте php+css? [требует правки]

Как поставить картинку фоном на сайте php+css?

191
Как из строки получить подстроку по регулярному выражению PHP

Как из строки получить подстроку по регулярному выражению PHP

Есть строка с HTML кодом и регулярка, которая находит все h3 заголовкиНо не могу найти в php функцию, которая возвращает подстроку по регулярному...

256
Php5.6. linux. ubuntu 16.04

Php5.6. linux. ubuntu 16.04

В Ubuntu 1604(mate) попытался установить php5

175
array_push() expects parameter 1 to be array, null given in

array_push() expects parameter 1 to be array, null given in

Есть переменная, объявляющая многомерный массив:

183