PHP MYSQL - Echo mysql значение, содержащее переменную PHP? - PullRequest
2 голосов
/ 12 июля 2011

Я пытаюсь получить отображаемую переменную, когда она используется как часть значения внутри таблицы mysql.

$variable = 'cool';

MYSQL FIELD VALUE

"This is '.$variable.' wow"

Когда я отображаю это значение, оно отображается как:

This is '.$variable.' wow

Я хочу, чтобы он отображался как:

This is cool wow

В чем тут подвох?

@ Марк извините, я новичок в этом

$linkQuery3 = 'SELECT model
FROM models
WHERE model_id = "'.$pageModel.'"
';
$sql15 = mysql_query($linkQuery3) or die(mysql_error());
if (mysql_num_rows($sql15) == 0) {
    die('No results.');
} else {
    while($row = mysql_fetch_assoc($sql15)) {
     $model = stripslashes($row['model']);
    }
}

$linkQuery2 = 'SELECT l.link , l.desc , l.domId , d.domain FROM links l INNER JOIN domains d ON d.domId = l.domId WHERE l.catId="'.$pageCat.'" && (l.modId="1" || l.modId="'.$pageModel.'") ORDER BY domain
';
$sql3 = mysql_query($linkQuery2) or die(mysql_error());
if (mysql_num_rows($sql3) == 0) {
    die('No results.');
} else {
    $pageContent .= '';
    while($row = mysql_fetch_assoc($sql3)) {
     $linkAd = ($row['link']);
     $linkDesc = ($row['desc']);
     $linkDomain = ($row['domain']);
     $pageContent .= '
        <li><a href="'.$linkAd.'" target="_tab">'.$linkDesc.' '.$linkDomain.'</a></li>
    ';
    }
}

Ответы [ 5 ]

3 голосов
/ 12 июля 2011

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

Вот что я предлагаю: используйте более простой разделитель для части строки, которую вы хотите заменить, например:

"This is :variable: wow"

и используйте str_replace(), чтобы повторить правильную вещь. (Вы также можете использовать sprintf() для той же цели.)

echo str_replace(':variable:', $variable, $mystring);

(Здесь $mystring содержит строку из базы данных.)

2 голосов
/ 12 июля 2011

используйте двойные кавычки:

echo "This is " . $variable . " wow";
2 голосов
/ 12 июля 2011

Вам нужно eval() строка, которую вы извлекаете из MySQL. Нет другого способа получить строку для интерпретации как код PHP. Однако eval () следует избегать любой ценой. Вам лучше использовать систему шаблонов или простую систему подстановки строк, чем eval (), исходящие из базы данных.

1 голос
/ 12 июля 2011

Попробуйте это:

"This is '" . $variable . '" wow"
0 голосов
/ 12 июля 2011

Это может быть намного проще.Просто сделай это ...

echo "This is '$variable' wow";

Это все, что тебе нужно.Нет необходимости выходить из строкового контекста и возвращаться обратно. Внешние двойные кавычки будут оценивать значение переменной.Если бы вы использовали одинарные кавычки снаружи, тогда он был бы оценен буквально как переменная $, а не как ее значение.

Таким образом, вы бы написали оператор выбора, например, такой:это просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...