PHP / mySQL: как объединить переменную в запросе mysql? - PullRequest
2 голосов
/ 22 ноября 2011

Как правильно объединить текст и переменную в PHP внутри mysql_query?Вот моя попытка:

page.'$pageID'

Я хочу, чтобы он вывел page3.

Вот весь код (упрощенный, чтобы сосредоточиться на mysql_query):

if ($_POST['pageProgress']) {
        $pageProgress = $_POST['pageProgress'];
        $pageID = 3;
        $userID = 1;
        $updateUserProgress = mysql_query("UPDATE test SET page.'$pageID'='$pageProgress' WHERE userID='$userID'") or die(mysql_error());
    }

Весь код работает отлично, если я просто заменю page.'$pageID' на page3.

Ответы [ 7 ]

8 голосов
/ 22 ноября 2011

Вам не нужно .. PHP анализирует строки в двойных кавычках (") и заменяет переменные их значениями. Как таковой:

$pageID = 3;
echo "UPDATE test SET page$pageID = '$pageProgress' WHERE userID = '$userID'";

http://codepad.viper -7.com / uIdqqH

2 голосов
/ 22 ноября 2011

Проблема в том, что ваш. $ PageID находится внутри строки в двойных кавычках; вы не объединяете это на стороне MySQL; он анализируется задолго до того, как MySQL его увидит.

Возможно, вы пытались экранировать имя поля для Mysql, в этом случае вы используете обратные метки.

Попытка:

'UPDATE test SET `page'.$pageID.'`=\''.$pageProgress.'\' WHERE...'

Или, на глаза гораздо проще:

"UPDATE test SET `page{$pageID}`='{$pageProgress}' WHERE..."
1 голос
/ 22 ноября 2011

Как то так.

mysql_query("UPDATE test SET page" . $pageID . " = '" . $pageProgress . "' WHERE userID = " . $userID)
1 голос
/ 22 ноября 2011

"UPDATE test SET page".$pageID."='".$pageProgress."' WHERE userID='".$userID."';"

Точки находятся не в том месте, чтобы делать это с помощью строковых функций PHP.

0 голосов
/ 22 ноября 2011

Вам не нужно ничего объединять. вам нужно очистить вашу переменную от post, хотя.

   if ($_POST['pageProgress']) {
    $pageProgress = mysql_real_escape_string($_POST['pageProgress']);
    $pageID = 3;
    $userID = 1;
    $updateUserProgress = mysql_query("UPDATE test SET page$pageID='$pageProgress' WHERE   userID='$userID'") or die(mysql_error());
    }
0 голосов
/ 22 ноября 2011
$updateUserProgress = mysql_query("UPDATE test SET page".$pageID." = '".$pageProgress."' WHERE userID='".$userID."'") or die(mysql_error());

@ Марк Б; это не вопрос ..

0 голосов
/ 22 ноября 2011

Попробуйте

mysql_query('UPDATE test SET page'.$pageID.'='.$pageProgress.' WHERE userID='.$userID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...