[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: unexpected T_Variable ошибка не знаю как исправить
Serghter
подскажите пожалуйста где я мог ошибиться в запросе? хотя через phpmyadmin запрос работает идеально,а тут,скрипт возвращает эту ошибку.Вот мой скрипт:

<?php
$db = mysql_connect("localhost", "root", "" ) or die('Could not connect: ' . mysql_error());
mysql_select_db('SCORES') or die('Could not select database');


$NAME = mysql_real_escape_string($_GET['NAME'], $db);
$hash = $_GET['hash'];

$secretKey="mySecretKey";

$real_hash = md5($NAME . $secretKey);
if($real_hash == $hash) {

$query = "SET @t:=1, @tk=0; SELECT MAX( @tk := ((@t := @t +1) *0 + IF( SCORES.NAME = "Serg", @t , 0 ))) AS position FROM SCORES ORDER BY SCORE DESC;";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

}
$num_results = mysql_num_rows($result);
for($i = 0; $i < $num_results; $i++)
{
$row = mysql_fetch_array($result);
echo $row['position'] . ".";
}


?>




Спустя 3 минуты, 50 секунд (5.04.2012 - 17:41) inpost написал(а):
Ты посмотри на код выше.
Или тупо скопируй его в DreamWeaver, и у тебя подчеркнётся плохое место.
А ошибка в кавычках. Внутри двойных - используй одинарные. Или наоборот. Потому что в случае с Сирёжей там всё неправильно.

Спустя 54 минуты, 37 секунд (5.04.2012 - 18:35) Serghter написал(а):
Но ведь запрос то работает как надо в phpmyadmin mysql. именно и показывает что serg находится на 4-й позиции,то что нужно.
ну вот я зделал так "'Serg'" и теперь орет на T_constant_encapsed_string

Спустя 37 минут, 21 секунда (5.04.2012 - 19:13) Jack_White написал(а):
"Serg" замени на 'Serg'

Спустя 6 минут, 42 секунды (5.04.2012 - 19:19) Serghter написал(а):
заменил,пишет query failed syntax error ругается именно на это теперь. я вместо Serg ставлю "$NAME" так как скрипт принимает значение например $NAME=Serg

Спустя 2 минуты, 26 секунд (5.04.2012 - 19:22) Игорь_Vasinsky написал(а):
Цитата
"Serg"
одинарные поставь.

Спустя 9 минут, 56 секунд (5.04.2012 - 19:32) Serghter написал(а):
уже делал "Serg" заменил на 'Serg'
пишет query failed syntax error ругается именно на это теперь. я вместо Serg ставлю "$NAME" так как скрипт принимает значение например $NAME=Serg

Спустя 1 минута, 24 секунды (5.04.2012 - 19:33) Placido написал(а):
Исправишь эту ошибку, появится еще одна - в синтаксисе SQL, т.к. mysql_query() не работает с множественными запросами.
--------
Уже smile.gif

Спустя 47 секунд (5.04.2012 - 19:34) Игорь_Vasinsky написал(а):
не понял... как выглядит строка на которую ругается?

действительно 2 запроса сразу...

Спустя 3 минуты, 42 секунды (5.04.2012 - 19:38) Serghter написал(а):
ну,да вот эти два запроса в mysql работают, тогда подскажите как впхп скрипте присвоить значения @t @tk чтобы потом sql их понял? потому что если я их вначале удалю а оставлю запрос с фразы SELECT... то будет опять ошибка пхп T_VARIABLE

Спустя 4 минуты, 34 секунды (5.04.2012 - 19:42) Placido написал(а):
Двумя запросами.
$query = "SET @t:=1, @tk=0;"; 
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$query = "SELECT MAX( @tk := ((@t := @t +1) *0 + IF( SCORES.NAME = '$Serg', @t , 0 ))) AS position FROM SCORES ORDER BY SCORE DESC;";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

Или используй mysqli, или PDO.

Спустя 11 минут, 6 секунд (5.04.2012 - 19:53) Serghter написал(а):
как я знаю в phpmyadmin используется mysql 5.
Но задачка решилась!!! спасибо за последний пост!)
теперь я понял как работать с 2-мя запросами)

Спустя 1 минута, 4 секунды (5.04.2012 - 19:54) Игорь_Vasinsky написал(а):
ты не путай PMA и mysql php

Спустя 3 часа, 16 минут, 33 секунды (5.04.2012 - 23:11) Serghter написал(а):
А нет,вру извините,да выводится цифра только не найденного номера позиции после сортировки по score, а выводится номер позиции тот который соответствует исходной таблице. Например Serg в бд- позиция 5 изначально,после сортировки должна быть 3,а выводится 5,как я понял это из за строчки:

SELECT MAX( @tk := ((@t := @t +1) *0 + IF( SCORES.NAME = '$Serg', @t , 0 ))) AS position


там MAX наверно сразу выводит значение которое первым сгенерировалось.
Тогда я не знаю уже как написать этот запрос чтобы вывелось максимальное число после сортировки. Т.е. если не использовать МАХ() будет отображена такая штука:
position name score
0 Ela 8900
0 Rog 12400
0 Ten 45812
0 Gerb 1245
5 Serg 9200
0 Lan 4512
0 trash 111
0 goo 0

а если задействовать MAX() то должно быть так:

position name score
0 Ten 45812
0 Rog 12400
3 Serg 9200
0 Ela 8900
0 Lan 4512
0 Gerb 1245
0 trash 111
0 goo 0

и потом вывести только максимальное значение position с именем Serg которое должно выглядеть так:

position
3
Быстрый ответ:

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