@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'];

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

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

Войти через центр авторизации
Похожие вопросы