Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не выполняется UPDATE
 
 автор: Sobachka   (28.04.2006 в 13:06)   письмо автору
 
 

Вообщем проблема простая не исполняется запрос пишу mysql_query ("UPDATE users SET kill = '1' WHERE id = '".$bid."';"); а в мускуле не выставляется килл=1 для юзера с id=$bdid,мож я что не так сделал?

   
 
 автор: Trianon   (28.04.2006 в 13:31)   письмо автору
 
   для: Sobachka   (28.04.2006 в 13:06)
 

kill, id - числа?
Тогда следует писать так:
mysql_query ("UPDATE users SET kill = 1 WHERE id = $bid"); 

Если хочется гарантии, что в $bid не подсунут инъекцию, то перед этим можно застраховаться:
$bid = intval($bid);
mysql_query ("UPDATE users SET kill = 1 WHERE id = $bid"); 

   
 
 автор: sobachka   (28.04.2006 в 13:32)   письмо автору
 
   для: Trianon   (28.04.2006 в 13:31)
 

Пасибо!Сейчас попробую...

   
 
 автор: Wood   (28.04.2006 в 14:49)   письмо автору
 
   для: Trianon   (28.04.2006 в 13:31)
 

Аналогичная проблема, выполняю такой скрипт:

<?
$sost
=1;
mysql_query ("UPDATE user SET sost = $sost WHERE name = 123");
$oper_sost mysql_query("select * from userlist WHERE name = 123");
 
mysql_query($oper_sost);
if (
$oper_sost==1)
{
echo 
"1";
}
else 
{
echo (
"Не 1");
}
?>

Но почему то ничего не обновляется и выводится "Не 1"

   
 
 автор: elenaki   (28.04.2006 в 14:58)   письмо автору
 
   для: Wood   (28.04.2006 в 14:49)
 

mysql_query ("UPDATE user SET sost = $sost WHERE name = 123");
$oper_sost = mysql_query("select * from userlist WHERE name = 123");

TAK user u/\u userlist?

   
 
 автор: Wood   (28.04.2006 в 15:11)   письмо автору
 
   для: elenaki   (28.04.2006 в 14:58)
 

user
Это я когда отделял код от скрипта спутал...

   
 
 автор: Wood   (28.04.2006 в 15:11)   письмо автору
 
   для: elenaki   (28.04.2006 в 14:58)
 

user
Это я когда отделял код от скрипта спутал...[b][/b]

   
 
 автор: elenaki   (28.04.2006 в 15:31)   письмо автору
 
   для: Wood   (28.04.2006 в 15:11)
 

добавляйте после каждого запроса or die(mysql_error()); тогда будет видно, что за ошибка..
у вас таблица называется user???? это зарезервированное слово. нельзя его использовать.

   
 
 автор: Wood   (28.04.2006 в 15:52)   письмо автору
 
   для: elenaki   (28.04.2006 в 15:31)
 

Спасибо, с обновлением разобрался, это всё из-за user
Но этот код:

<?
include "config.php";
$oper_sost mysql_query("select * from userlist WHERE name = '123'") or die(mysql_error());
 
mysql_query($oper_sost);
if (
$oper_sost==1)
{
echo 
"1";
}
else 
{
echo (
"Не 1");
}
?>

Попрежнему не работает

   
 
 автор: elenaki   (28.04.2006 в 15:58)   письмо автору
 
   для: Wood   (28.04.2006 в 15:52)
 


<? 
include "config.php"
$oper_sost ="select * from userlist WHERE name = '123'";
mysql_query($oper_sost)  or die(mysql_error()); 

if (
mysql_query($oper_sost)) 

echo 
"1"

else 

echo (
"Не 1"); 

?> 

   
 
 автор: Trianon   (28.04.2006 в 15:56)   письмо автору
 
   для: Wood   (28.04.2006 в 14:49)
 

А что именно Вы пытаетесь определить?

$oper_sost примет одно из двух значений.
а)Либо false - это если Вы ошиблись в синтаксисе/семантике запроса.
б) Либо ресурс с ответом. Если запрос принят как верный. Причем независимо от того, есть ли у Вас user у которого name = 123 или нету. И уж тем более, независимо от того, какое у этого user'a на данный момент sost.

Но ни false, ни ресурс с ответом не равны единице. Поэтому в результате выполняется ветвь со вторым echo, и Вы получаете "Не 1".

   
 
 автор: Wood   (28.04.2006 в 15:59)   письмо автору
 
   для: Trianon   (28.04.2006 в 15:56)
 

Подскажите тогда как можно проверить sost user'а.

   
 
 автор: Trianon   (28.04.2006 в 16:11)   письмо автору
 
   для: Wood   (28.04.2006 в 15:59)
 

<?
$query 
"select sost from user WHERE name = '123' "
$res mysql_query($query );
if(
$res === false
    die(
"Не удается выполнить запрос $query поскольку " mysql_error());
$rows mysql_num_rows($res);
if(
$rows != 1)
     die(
"Нет в таблице user строки с name = 123, а если есть, то не одна, а несколько");
$sost mysql_result($res0);
echo 
$sost;
?>

   
 
 автор: Wood   (28.04.2006 в 16:32)   письмо автору
 
   для: Trianon   (28.04.2006 в 16:11)
 

Пишет:

Parse error: parse error, unexpected T_VARIABLE in С:\Apache2\htdocs\123.php on line 2

   
 
 автор: Trianon   (28.04.2006 в 16:40)   письмо автору
 
   для: Wood   (28.04.2006 в 16:32)
 

Значит что-то не так в первой-второй строках файла 123.php

   
 
 автор: Wood   (28.04.2006 в 16:50)   письмо автору
 
   для: Trianon   (28.04.2006 в 16:40)
 

На данный момент файл 123.php как раз и состоит только из тех строк которые Вы здесь привели, таким образом 2 строка это:
$query = "select sost from user WHERE name = '123' "; 
.

   
 
 автор: Trianon   (28.04.2006 в 17:05)   письмо автору
 
   для: Wood   (28.04.2006 в 16:50)
 

Значит ошибка на строке 1.

Между прочим, до строки 2 имеет смысл как-то соединиться с базой данных.
Видимо, вставить строку include "config.php";
Только parse error, unexpected T_VARIABLE (что означает: "неожиданно встретился знак $"), происходит явно не из-за этого. В первой строке что-то не то.

   
 
 автор: Wood   (28.04.2006 в 17:32)   письмо автору
 
   для: Trianon   (28.04.2006 в 17:05)
 

А Вы сами попробуйте выполнить данный скрипт:

<?
include "config.php"
$query "select sost from userlist WHERE name = '123";
$res mysql_query($query );
if(
$res === false)
    die(
"Не удается выполнить запрос $query поскольку " mysql_error());
$rows mysql_num_rows($res);
if(
$rows != 1)
     die(
"Нет в таблице user строки с name = 123, а если есть, то не одна, а несколько");
$sost mysql_result($res0);
echo 
$sost;
?> 

И скажите что высветится...

   
 
 автор: Trianon   (28.04.2006 в 17:46)   письмо автору
 
   для: Wood   (28.04.2006 в 17:32)
 

Я Вам и так скажу, что высветится. Parse error: parse error, unexpected T_VARIABLE in file.php on line 3
Потому что после include "config.php" символ доллара на следующей строке совершенно не к месту. После include "config.php" должна стоять точка с запятой.
Когда Вы исправите эту ошибку - следующей будет синтаксическая ошибка в SQL-запросе.
Вы зачем-то убрали апостроф после WHERE name = '123.
А когда вернете апостроф - тогда может что-то и выйдет.

   
 
 автор: Sobachka   (29.04.2006 в 14:43)   письмо автору
 
   для: Trianon   (28.04.2006 в 13:31)
 

блин,мне вт такую ошибку показывает:


Warning: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO) in /usr/home/mmfka/public_html/chat.php on line 596

Warning: mysql_query(): A link to the server could not be established in /usr/home/mmfka/public_html/chat.php on line 596

   
 
 автор: Sobachka   (29.04.2006 в 14:44)   письмо автору
 
   для: Sobachka   (29.04.2006 в 14:43)
 

чё не так?

   
 
 автор: itica   (29.04.2006 в 15:40)   письмо автору
 
   для: Sobachka   (29.04.2006 в 14:43)
 

Это означает что у Вас ошибка в 596 строке, хотелось бы на неё посмотреть, вероятнее всего у Вас что то не так в настройках подключения к БД.

   
 
 автор: Sobachka   (29.04.2006 в 16:00)   письмо автору
 
   для: itica   (29.04.2006 в 15:40)
 

не,другие функции норма пашут,

$ins_str = "Update users set trafik='".$new_traf."' where id ='".$id."'";
if (@mysql_query ($ins_str)) {
echo "<br/><small>Tpa&#x0444;&#x0438;&#x043A;: <a href=\"traf.php?id=$id&ps=$ps&rm=$rm\">$file_size</a>&#x043A;&#x0431;</small>";
 } else {
echo "<br/><small>Tpa&#x0444;&#x0438;&#x043A;: $file_size/$old_traf &#x043A;&#x0431;</small>";
}

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования