[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрос в MySQL... в чем ошибка
tkir
написал такой кусок кода, в него передается массив $index_array вида:
Array
(
[0] => Array
(
[time] => 1330901100
[country] => New_Zealand
[importance] => 1
[name] => text
[fact] => -2.3%
[forecast] =>
[previous] => 3.2%
)

[1] => Array
(
[time] => 1330903800
[country] => Australia
[importance] => 1
[name] => text
[fact] => 46.7
[forecast] =>
[previous] => 51.9
)

[2] => Array
(
[time] => 1330907400
[country] => Australia
[importance] => 1
[name] => text
[fact] => 0.1%
[forecast] =>
[previous] => 0.2%


хочу проверить записана ли эта информация в базу, если да - то UPDATE этой записи, если нет, то добавить новую запись. В результате - всегда нет, даже если я вижу что всё совпадает.
Подскажите, где ошибка?
    if (!mysql_connect('localhost','root','')){
echo "Ошибка подключения к серверу MySQL";
exit;
}
$sql_calendar=mysql_select_db('calendar');
$count=count($index_array);
for ($i=0;$i<$count;$i++){
$where="country='".$index_array[$i][country]."', AND name='".$index_array[$i][name]."'";
$sql_econom_calendar=mysql_query("SELECT * FROM econom_calendar WHERE ".$where);
if($sql_econom_calendar){
$set="time='".$index_array[$i][time]."' importance='".$index_array[$i][importance]."' fact='".$index_array[$i][fact]."' forecast='".$index_array[$i][forecast]."' previous='".$index_array[$i][previous]."'";
mysql_query("UPDATE econom_calendar SET ".$set." WHERE ".$where);
}else {
$values="'".$index_array[$i][time]."','".$index_array[$i][country]."','".$index_array[$i][importance]."','".$index_array[$i][name]."','".$index_array[$i][fact]."','".$index_array[$i][forecast]."','".$index_array[$i][previous]."'";
mysql_query("INSERT INTO econom_calendar (time, country, importance, name, fact, forecast, previous) VALUES (".$values.")");
}
}

mysql_close();




Спустя 8 минут, 29 секунд (9.03.2012 - 11:39) Visman написал(а):
$where="country='".$index_array[$i][country]."', AND name='".$index_array[$i][name]."'";

Что в условии делает запятая?

Спустя 2 минуты, 15 секунд (9.03.2012 - 11:41) T1grOK написал(а):

...
$sql_econom_calendar=mysql_query("SELECT * FROM econom_calendar WHERE ".$where);
if(mysql_num_rows($sql_econom_calendar) > 0){
...

И как заметил Visman запрос неправильно сформирован

Спустя 6 минут, 49 секунд (9.03.2012 - 11:48) tkir написал(а):
спасибо!!! заработало!

Спустя 3 минуты, 26 секунд (9.03.2012 - 11:51) sergeiss написал(а):
Цитата (tkir @ 9.03.2012 - 12:30)
хочу проверить записана ли эта информация в базу, если да - то UPDATE этой записи, если нет, то добавить новую запись.

Для выполнения этой задачи существует более правильный способ. Прочитай в хэлпе про INSERT ... ON DUPLICATE KEY UPDATE. Именно в Мускуле такая шняга уже готовая существует.
Если у тебя какое-то сложное условие, то можно создать триггер и его использовать, причем весьма успешно.

Цитата (tkir @ 9.03.2012 - 12:48)
спасибо!!! заработало!

Но лучше сразу переделай, т.е. сделай правильно smile.gif
Быстрый ответ:

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