2013-05-27 3 views
1

В столбце «user_id» моей таблицы я хотел бы вставить идентификатор пользователя, который только что зарегистрировался на моей странице. Идея состоит в том, чтобы связать свой недавний сгенерированный доход с идентификатором пользователей, чтобы определить возможную двойную регистрацию дохода.Обновление строки с наибольшим значением

Для этого мне нужно обновить столбец user_id в строке, где значение дохода_ид имеет наибольшее значение, т. Е. Последний сгенерированный доход, но что-то не работает. Мой код:

$query = "SELECT max(id_income) FROM `affiliate_income`"; 
$last_income = mysql_query($query, $conn) or die(mysql_error()); 
$last = mysql_fetch_assoc($last_income); 

     $updtsql = "UPDATE affiliate_income SET `id_user`=".$row_user_code['id_user']."WHERE id_income =".$last; 
     $result = mysql_query($updtsql, $conn) or die(mysql_error()); 

любые идеи?

+1

Что вы имеете в виду под «что-то не работает» ?? Какая ошибка? –

+0

У вас возникла ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'id_income = Array' по строке 1 – Merlin

+0

, но что-то не работает! Что и укажите, есть ли какая-либо ошибка! –

ответ

1

На самом деле вы можете сделать это в одном запросе,

UPDATE affiliate_income a 
     INNER JOIN (SELECT MAX(id_income) id_income FROM affiliate_income) b  
      ON a.id_income = b.id_income 
SET  a.id_user = 'valueHere' 
+0

Thanks , J. Я пробовал это, но он не работает – Merlin

0

Вы пытаетесь получить максимальную id_income, но во втором запросе (updtsql) вы пытаетесь найти id_income = массив. Кроме того, вы не помещаете пробел перед предложением WHERE.

$query = "SELECT max(id_income) AS ii FROM `affiliate_income`"; 
$last_income = mysql_query($query, $conn) or die(mysql_error()); 
$last = mysql_fetch_assoc($last_income); 

$updtsql = "UPDATE affiliate_income SET `id_user`=".$row_user_code['id_user']." WHERE id_income =".$last['ii']; 
$result = mysql_query($updtsql, $conn) or die(mysql_error()); 
+0

Вы правы! Я внес изменения, и теперь он работает отлично. Спасибо, Özkan! – Merlin

+0

@Merlin. Вы хорошо. – zkanoca

0

Вы получаете значение $last как array.So вы должны GIV запрос вроде следующего

$updtsql = "UPDATE affiliate_income SET `id_user`=".$row_user_code['id_user']."WHERE id_income =".$last['id_income']; 
Смежные вопросы