Я сделал этот код для того, чтобы выделить +1 точку, но это не работает правильно.
mysql_query("
UPDATE member_profile
SET points= ' ".$points." ' + 1
WHERE user_id = '".$userid."'
");
переменная $points является точками пользователя прямо сейчас.. Я хочу это к плюс одно к нему.. так пример, если он имел как 5 точек, это должно быть 5+1 = 6.. но это не делает, это просто изменяется на 1
Что я сделал неправильно?спасибо
Вы также можете просто сделать это:
mysql_query("
UPDATE member_profile
SET points = points + 1
WHERE user_id = '".$userid."'
");
Как с помощью регулярного выражения найти все пробелы, а затем усечь на матче, который является наибольшим, но все же меньше или равен вашей желаемой длине.
function truncate($text, $length) {
$length = abs((int)$length);
$count = preg_match_all("(\s+)", $text, $matches, PREG_OFFSET_CAPTURE);
while ($count > 0) {
if ($matches[$count][0] <= $length) {
$length = $matches[$count][0];
break;
}
$count = $count - 1;
}
return substr($text, 0, $length)
}
-121--4716307- Не забудьте сохранить новые настройки по умолчанию на странице Сеанс. Нажмите Применить и наслаждайтесь!
-121--4859454-Надеюсь, что я не буду оффтопичным на моем первом посту, но я хотел бы немного расширить на литье целочисленного в строку, так как некоторые респонденты, кажется, неправильно.
Поскольку выражение в этом запросе использует арифметический оператор (символ плюс +), MySQL преобразует любые последовательности в выражении в числа.
Чтобы продемонстрировать, следующее приведет к результату 6:
SELECT ' 05.05 '+'.95';
Для конкатенации строк в MySQL требуется функция CONCAT (), поэтому здесь нет двусмысленности, и MySQL преобразует строки в плавающие и добавляет их вместе.
Я на самом деле думаю, что причина, по которой первоначальный запрос не работал, скорее всего, потому, что переменная $ points на самом деле не была установлена в текущие точки пользователя. Он был либо установлен в ноль, либо не установлен: MySQL приведет пустую последовательность к нулю. Для иллюстрации 0 вернётся следующее:
SELECT ABS('');
Как я уже сказал, я надеюсь, что не буду слишком не-тематично. Я согласен, что у Даана и Томаша есть лучшие решения для этой конкретной проблемы.
Вы можете сделать это, не запрашивая фактическое количество баллов, поэтому сэкономит вам время и ресурсы при выполнении скрипта.
mysql_query("UPDATE `member_profile` SET `points`= `points` + 1 WHERE `user_id` = '".intval($userid)."'");
Иначе, что вы делали неправильно, так это то, что вы передали старое количество очков в виде строки ( points = '5' + 1
), и вы не можете добавить число в строку. ;)
Удалите '
вокруг точки
:
mysql_query("UPDATE member_profile SET points=".$points."+1 WHERE user_id = '".$userid."'");
Вы «преобразуете» целочисленное значение в строку в исходном запросе ...
Почему бы вам не позволить PHP выполнить эту работу?
"UPDATE member_profile SET points= ' ". ($points+1) ." ' WHERE user_id = '".$userid."'"
"UPDATE member_profile SET points = points + 1 WHERE user_id = '".$userid."'"