@koroteev_d

UPDATE PHP в чем проблема?

Добрый вечер.. перейду сразу к телу.
Есть кусок кода на обновление записи в базе
function get_edit_item_form()
{
echo '<h2>Редактировать</h2>';
$query = 'SELECT * FROM lection WHERE id='.$_GET['id'];
$res = mysql_query( $query );
$item = mysql_fetch_array( $res );
echo '<form name="editform" action="'.$_SERVER['PHP_SELF'].'?action=update&id='.$_GET['id'].'" method="POST">';
echo '<table>';
echo '<tr>';
echo '<td>Наименование</td>';
echo '<td><input type="text" name="title" value="'.$item['LectionTitle'].'"></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Описание</td>';
echo '<td><input type="number" name="description">'.$item['IncludedFileID'].'></td>';
echo '</tr>';
echo '<tr>';
echo '<td><input type="submit" value="Сохранить"></td>';
echo '<td><button type="button" onClick="history.back();">Отменить</button></td>';
echo '</tr>';
echo '</table>';
echo '</form>';
}
 
// Функция обновляет запись в таблице БД 
function update_item()
{
$title = mysql_escape_string( $_POST['title'] );
$description = mysql_escape_string( $_POST['description'] );
$FID=(int)$description;
$query = "UPDATE lection SET LectionTitle='".$title."', IncludedFileID='".$FID."'
WHERE id=".$_GET['id'];
echo $query;
mysql_query ( $query ) or die (mysql_error());
 
echo "<br>";
//var_dump($_POST);
echo "<br>";
echo "<font color='red'>$FID</font>";
 
    echo '<meta http-equiv="Refresh" content="15;url=./lection.php"/>'; 
}


Внимание вопрос, если в поля LectionTitle и IncludedFileID ставить напрямую значения, то есть
LectionTitle = 'e', IncludedFileID='1'
то все срабатывает, данные в базе обновляются.
Как только пытаюсь засунуть туда переменные - все ложится и ничего не происходит. Скорее даже - поля заполняются нулями
выводил через echo переменную с запросом, когда вставлял переменные, получилось:
UPDATE `lection` SET `LectionTitle` = 'fwfw', `IncludedFileID` = '23535' WHERE id=131


П.С. код на добавление новой записи работает
function add_item()
{
$LectionTitle = mysql_escape_string( $_POST['LectionTitle'] );
$IncludedFileID = mysql_escape_string( $_POST['IncludedFileID'] );
$query = "INSERT INTO lection (LectionTitle, IncludedFileID) VALUES ('".$LectionTitle."', '".$IncludedFileID."');";
mysql_query ( $query );
    echo '<meta http-equiv="Refresh" content="2;url=./lection.php"/>'; 
die();
}


Дампы:
array(2) { ["title"]=> string(2) "24" ["description"]=> string(1) "2" } 
string(68) "UPDATE lection SET LectionTitle='24', IncludedFileID='2' WHERE id=2"
  • Вопрос задан
  • 696 просмотров
Пригласить эксперта
Ответы на вопрос 2
@koroteev_d Автор вопроса
function update_item()
{
$title = mysql_escape_string( $_POST['title'] );
$description = mysql_escape_string( $_POST['description'] );
$FID=(int)mysql_escape_string( $_POST['description'] );

$query = "UPDATE `lection` SET `LectionTitle`=$title, `IncludedFileID`=$FID WHERE id=".$_GET['id'];

echo $query;
mysql_query ( $query ) or die (mysql_error());
 mysql_query(' SET AUTOCOMMIT=1 ');

    echo '<meta http-equiv="Refresh" content="5;url=./lection.php"/>'; 
}


Работающая версия, если кому нужно

UP.
К слову - автокоммит, как выяснилось проблему не решил.
Решило проблему - перенос функций в отдельные файлы. Сейчас все работает.
Ответ написан
@nozzy
Symfony, Laravel, SQL
echo '<h2>Редактировать</h2>';
$query = 'SELECT * FROM lection WHERE id='.$_GET['id'];

Так редактировать очень плохо, злодеи могут вам отредактировать базу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽