Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
update в mysql
 
По каким причинам может не выполняться обновление в базе? Если я заменяю на статичекое значение, заданное в коде, то все проходит нормально. При попытке подставить переменную - просто ничего не происходит .
Есть файл edit.php вот часть его кода:
$sql = mysql_query("SELECT * FROM news WHERE news_id=$id");
$myrow = mysql_fetch_array($sql);
echo " lt;form action=edit_table.php gt;
  lt;input type=hidden name=old_id value=$myrow[news_id] gt; lt;/input gt;
  lt;input type=text name=id value=$myrow[news_id] gt; lt;/input gt;
  lt;input type=text name=title value=$myrow[news_title] gt; lt;/input gt;
  lt;input type=text name=date value=$myrow[news_date] gt; lt;/input gt;
  lt;input type=text name=author value=$myrow[news_owner] gt; lt;/input gt;
  lt;textarea name=pre_content gt;$myrow[news_pretext] lt;/textarea gt;
  lt;textarea name=content gt;$myrow[news_text] lt;/textarea gt;
  lt;input type=submit value=Обновить gt; lt;/input gt; lt;/form gt;";

Которая выводит новость из таблицы news и измененные данные передает странице edit_table.php. Вот ее код:

lt;?  include("db_config.php");
 // Connect to sql
nbsp; nbsp; nbsp;mysql_connect($sql_host, $sql_user, $sql_pass) or die ("BAD!!!Unable to connect to database.");
nbsp; nbsp; nbsp;$query="UPDATE  news SET news_id=$id , news_title=$title , news_owner=$author , news_date=$date , news_pretext=$pre_content , news_text=$content WHERE news_id=$old_id";
$result=mysql_query($query);
print "Ok!";
nbsp; nbsp; nbsp;? gt;

Все вроде бы работает , никаких ошибок но данные не обновляются!
Пожалуйста помогите, может я что-то просто по спешке упустил, короче нужен трезвый взгляд.
 
вызови mysql_error()

if ($result) {echo "OK";}
else {echo mysql_error();}

еще неплохо бы все стровоые данные в запрос в одинарных кавычках вставлять.
И echo $query; удобно при отладке
 
А ты может где-то в вставляемых данных кавычку оставил? Типа Admins password. Обычно на такое скрипт ругается, а самого зла не показывает. Юзай addslashes() для твоих данных. Ошибок не будет, да и дырок поубавится. Вообще, это хорошая привычка-закавычивать данные в запросах к БД
 
Цитата
RedHotPHPepper пишет:
А ты может где-то в вставляемых данных кавычку оставил? Типа Admins password. Обычно на такое скрипт ругается, а самого зла не показывает. Юзай addslashes() для твоих данных. Ошибок не будет, да и дырок поубавится. Вообще, это хорошая привычка-закавычивать данные в запросах к БД

Только не addslashes(), а mysql_escape_string(), вдобавок перед этим псмотреть что у нас в get_magic_quotes_gpc()  
 
Вообще говоря, тема безопасности данных в БД очень велика, и даже в случае kostolomом есть несколько способов выхода из стиуации. Я например,вообще написал псевдо-функцию для обработки даных в БД. И не парюсь...
 
А что за псевдо функция?
 
Ну вот к примеру

function safe_data($str) {
addslashes($str);
}

Вместо addslashes() можно(как тебе уже сказали) mysql_escape_string().

В отдельных случаях надо еще добавлять htmlspecialchars(strip_tags($str)), чтоб обезопасить себя от всяких XSS. Но это не панацея. Чтобы реально грамотно написть защиту надо помудрить немного.Совсееем немножечко.
 
Правильней былоб так:

function safe_data($str) {
if (!get_magic_quotes_gpc()) return addslashes($str);
return $str;
}
Страницы: 1
Читают тему