[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не работают несколько mysql_query подряд
Smilecat
Добрый день, надеюсь кто нибудь поможет решить проблему


$mysql_connection = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) ;
mysql_select_db(SQL_BASE, $mysql_connection);
mysql_set_charset(SQL_CHAR_SET, $mysql_connection);
foreach($data as $item) {
$query = "SELECT id FROM table WHERE page_id='{$item['page_id']}'";
$result = mysql_query($sql, $mysql_connection);
$query = "UPDATE table SET val='{$item['val']}' WHERE id='{$result[0]['id']}'";
mysql_query($query, $mysql_connection);
echo mysql_info();
}


Если в массиве дата до 20 элементов, скрипт работает нормально, апдейтит всё, что нужно. Если элементов больше(в моем случае несколько тысяч) - ничего не происходит. Хотя каждый запрос по отдельности полностью корректен, после отправления 30 и более Update-ов что-то перестает работать. При этом mysql_info() сообщает, что варнингов нет, 1 строка изменена(хотя на самом деле это не так)

Что это может быть?



Спустя 18 минут, 28 секунд (21.02.2011 - 19:02) nugle написал(а):
насколько я знаю mysql_query($query); а не mysql_query($query, $mysql_connection); но может я просто дремучий

Спустя 3 минуты, 32 секунды (21.02.2011 - 19:06) T1grOK написал(а):
Цитата (nugle @ 21.02.2011 - 16:02)
насколько я знаю mysql_query($query); а не mysql_query($query, $mysql_connection); но может я просто дремучий

Все тут правильно mysql_query, кроме самого запроса, можно указать идентификатор соединения.

Спустя 8 минут, 28 секунд (21.02.2011 - 19:14) ИНСИ написал(а):
Smilecat если у тебя тысячи запросов, где идут одинарные ковычки, могут быть проблемы :) код просто будет выдавать ошибку. Постарайся все делать в апострафах и одинарных кавычках + самое важное, проверяй содержимое .... Примерно так:
function safesql($value) {
if(get_magic_quotes_gpc()) $value = stripslashes($value);
$value = mysql_real_escape_string(trim($value));
return $value;
}

foreach($data as $item) {
$result = mysql_query("
SELECT `id`
FROM `table`
WHERE `page_id` = '"
.(int)$item['page_id']."'
"
) or die(mysql_error());

if($dataRow = mysql_fetch_assoc($result)) {
mysql_query("
UPDATE `table`
SET `val` = '"
.safesql($item['val'])."'
WHERE `id` = '"
.(int)$dataRow['id']."'
"
) or die(mysql_error());
}

echo 'OK';
}

Спустя 3 минуты, 34 секунды (21.02.2011 - 19:18) Renden написал(а):
Smilecat
Хм.. а разве так можно?
$query = "SELECT id FROM table WHERE page_id='{$item['page_id']}'";
$result = mysql_query($sql, $mysql_connection);
Во 1-х по моему скромному имхо, тут имя запроса не $sql а $query
во 2-х mysql_query не выдает результатов

И опять же я могу ошибаться но должно быть как-то так:

$mysql_connection = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) ;
mysql_select_db(SQL_BASE, $mysql_connection);
mysql_set_charset(SQL_CHAR_SET, $mysql_connection);
foreach($data as $item) {
$query = mysql_query ("SELECT id FROM table WHERE page_id='".$item['page_id']."'");
$result =mysql_result($query);
mysql_query ("UPDATE table SET val='".$item['val']."' WHERE id='".$result['id']."'");
echo mysql_info();
}

Спустя 10 минут, 35 секунд (21.02.2011 - 19:28) T1grOK написал(а):
Renden

$query = "SELECT id FROM table WHERE page_id='{$item['page_id']}'";

Да так можно.
Быстрый ответ:

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