[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: счетчик выгрузки строк из mysql
evgeny777
Добрый день.
существует mysql таблица, в которой есть столбик show, в который записывается сколько раз выгружалась данная запись. соответственно, при выгрузке нужных строк эта ячейка в каждой выгружаемой строке должна обновляться. существует код выгрузки, все выгружается, но этот параметр не обновляется. может кто-нибудь подскажет в чем тут ошибка?
выгрузка работает - проблема именно в обновлении mysql
Заранее всем спасибо!

$query = "select * from base ".( !empty($_POST['metro']) && is_array($_POST['metro']) ? " WHERE `metro` IN ('".implode("', '", array_map('mysql_real_escape_string', $_POST['metro']))."')" :  "" );
$sql = mysql_query($query)
or die ("Невозможно выполнить запрос");
$n = mysql_num_rows ( $sql );
echo "<table>";
for ( $i=0; $i<$n; $i++ )
{
$row = mysql_fetch_array($sql);
$show = $row[show];
$shownew = $show + 1;
$queryshow = "UPDATE base SET show = '$shownew' where id = '$row[id]'";
$sqlshow = mysql_query($queryshow);
echo "<tr><td>$row[id]</td><td>$row[metro]</td><td>$row[show]</td></tr>";
}
echo "</table>";




Спустя 38 минут, 10 секунд (24.12.2011 - 16:56) dadli написал(а):
ето:
for ( $i=0; $i<$n; $i++ )
{
$row = mysql_fetch_array($sql);
$show = $row[show];
$shownew = $show + 1;
$queryshow = "UPDATE base SET show = '$shownew' where id = '$row[id]'";
$sqlshow = mysql_query($queryshow);
echo "<tr><td>$row[id]</td><td>$row[metro]</td><td>$row[show]</td></tr>";
}
echo "</table>";



замените с етим:
for ( $i=0; $i<$n; $i++ )
{
$row = mysql_fetch_assoc($sql);
mysql_query("UPDATE `base` SET `show` = `show` + 1 WHERE id = ".$row['id']) or die (mysql_error());
echo "<tr><td>$row[id]</td><td>$row[metro]</td><td>$row[show]</td></tr>";
}
echo "</table>";


и еше
1) почему так: $row[show] ? лучшее так: $row['show'] (в одинарних ковичках)
2) и смертелная ошибка, show - ето функця мускл-а, и когда так називается полю или таблицу, её обязателна написать таким образом `show` (в одинарних, обратних ковичках).

Спустя 49 минут, 27 секунд (24.12.2011 - 17:46) evgeny777 написал(а):
dadli использовал ваш совет - в итоге ни в базу не пишет, ни таблицу не отображает. сообщение об ошибке тоже не пишет, просто пустое место sad.gif

Спустя 7 минут, 40 секунд (24.12.2011 - 17:54) dadli написал(а):
evgeny777
аа извиняюс, я сделал mysqli а вам mysql.
я отредактировал мои верхни сообшеня, сеичас скопитуите и попрубуите.

Спустя 29 минут, 52 секунды (24.12.2011 - 18:23) inpost написал(а):
$res = mysql_query("UPDATE `base` SET `show` =  `show` + 1 WHERE `id` = ".(int)$row['id']) or die(mysql_error());

Спустя 28 минут, 23 секунды (24.12.2011 - 18:52) evgeny777 написал(а):
dadli и inpost большое спасибо все работает!:)
inpost а для чего вы проставляете (int) перед $row['id'] ?

Спустя 5 минут, 41 секунда (24.12.2011 - 18:58) inpost написал(а):
evgeny777
Если число, то int, если текст, то mysql_real_escape_string, привычка везде вешать, чтобы потом не сбиться и случайно не пропустить. Иначе sql-inj.
Тебе, например, надо для $_POST['metro']:
`metro` = '".mysql_real_escape_string($_POST['metro'])."'

Для безопасности.

Спустя 12 минут, 4 секунды (24.12.2011 - 19:10) evgeny777 написал(а):
inpost
Ага! понял! большое спасибо - учту!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.