2013-08-06 2 views
0

im используя php-скрипт, который используется для просмотра видео. В течение 2-3 дней у меня есть 1k онлайн-пользователей одновременно и теперь я получаю внутреннюю ошибку сервера в случайные моменты времени. Когда на моем сайте было меньше посетителей, я никогда не видел эту ошибку.Невозможно перейти к строке 0 по индексу результата MySQL 6 в .../tag.php в строке 8

<?php 
include('config.php'); 
if($site[cache]>=3) 
include('cache.head.php'); 
$tsef=htmlspecialchars($_GET[sef]); 
$query=mysql_query("SELECT tag FROM tags WHERE sef='$tsef' LIMIT 1"); 
@mysql_query("UPDATE tags SET views=views+1 WHERE sef='$tsef'"); 
**$tag=mysql_result($query,0);** 
$tkeywords=explode(' ',$tag); 
?> 

Я думаю, что я нужен некоторый механизм кэширования, как я вижу предельный процесс близок максимум на моем веб-хостинга service.but я не знаю горячей чюо реализации.

+0

Вы широко открыты для [атак внедрения SQL] (http://bobby-tables.com). Наслаждайтесь наличием вашего сервера pwn3d ... 'htmlspecialchars()' is ** NOT ** защита. –

ответ

0

Эта ошибка указывает, что ваш запрос не возвращал никаких строк; вы не можете прочитать столбец из ничего. В URL-адресе не было меток, соответствующих значению «sef». Я не думаю, что это связано с проблемами загрузки вашего сервера.

Давайте очистить это немного:

include('config.php'); 
if ($site[cache] >= 3) 
    include('cache.head.php'); 

$tsef = mysql_real_escape_string(htmlspecialchars($_GET['sef'])); 
$result = mysql_query("SELECT tag FROM tags WHERE sef='$tsef' LIMIT 1"); 

$tkeywords = array(); 
if ($result && mysql_num_rows($result) > 0) { 
    $tag = msyql_result($result, 0); 
    $tkeywords = explode(' ', $tag); 
    mysql_query("UPDATE tags SET views=views+1 WHERE sef='$tsef'"); 
} 
Смежные вопросы