Добавление переменной сеанса в запрос MYSQL с использованием PHP - PullRequest
6 голосов
/ 11 февраля 2011

Я пытаюсь передать две переменные в запрос MySQL, и он застревает при передаче переменной сеанса ниже:

$check = mysql_query("SELECT * 
                      FROM Clients 
                      WHERE Username = '$new_username' 
                      AND Username != '$_SESSION['Username']'") or die(mysql_error()); 

Есть советы? Заранее спасибо.

Ответы [ 4 ]

9 голосов
/ 11 февраля 2011

Это потому, что ваши одинарные кавычки '$_SESSION['Username']' завершены значением в сессииИзменение этого значения на '" . $_SESSION['Username'] . "' решит проблему.

8 голосов
/ 11 февраля 2011

Это будет работать, но это ОЧЕНЬ, ОЧЕНЬ ПЛОХО :

$check = mysql_query("
    SELECT * 
    FROM  Clients 
    WHERE Username = '$new_username' 
    AND   Username != '{$_SESSION['Username']}'
") or die(mysql_error());

Это тоже сработает и рекомендуемый способ сделать это:

$check = mysql_query("
    SELECT * 
    FROM  Clients 
    WHERE Username  = '" . mysql_real_escape_string($new_username) . "' 
    AND   Username <> '" . mysql_real_escape_string($_SESSION['Username']) . "'
") or die(mysql_error());
0 голосов
/ 06 августа 2014

Почему никто не говорит о синтаксисе "text text $ array [key] text"?

SELECT * 
FROM  Clients 
WHERE Username = '$new_username' 
AND   Username != '$_SESSION[Username]'
0 голосов
/ 11 февраля 2011

Когда вы встраиваете массивы в строки, вы должны разделять их, объединяя их или используя фигурные скобки.

$string = "text text {$array['key']} text";

или

$string = "text text " . $array['key'] . " text";
...