проблема с селектом syntax error, unexpected '$r' (T_VARIABLE) in

137
26 октября 2017, 10:19

привет всем, у меня такая проблема при выполнении etogo

$posts4 = null;
if($_POST['hero']) {
    //var_dump($r);
    $r = $_POST['hero4'];
    $query = ' SELECT * FROM apranq_test  WHERE type = "մոտորներ" AND param_2 = '$r' ' ; 
    //var_dump($query);
    $select_op = mysqli_query($conn,$query);
    $posts3 = mysqli_fetch_all($select_op, MYSQLI_ASSOC);
    $posts4 = array_reverse($posts3);
    //print_r($posts3);
    //echo $posts3;
},

кода пишет syntax error, unexpected '$r' (T_VARIABLE) in 24 не мог найти проблему

Answer 1
  • Вставлять переменную в строку можно только если строка обрамлена двойными кавычками. В одинарных если написать echo '$r' то и выведется $r. Поэтому единственный вариант вставить переменную в строку с одинарными кавычками: закрыть строку кавычкой, сконкатинировать переменную, открыть строку кавычкой и добавить остальную часть не забыв закрыть снова.

    Разница в строках: http://php.net/manual/ru/language.types.string.php

    Примеры:

    $myVar = 'Hello world!';
    // строка с одинарными кавычками
    $singleQuoteString = 'Привет мир по английски: '. $myVar .' Вот так!';
    // строка с двойными кавычками
    $doubleQuoteString = "Привет мир по английски: $myVar Вот так!";
    // строка с двойными кавычками2 - для сложных переменных
    $doubleQuoteString = "Привет мир по английски: {$myVar} Вот так!";
  • Если строка обрамлена в одинарные кавычки, то чтобы внутри описать еще кавычки — надо писать либо двойные ", либо экранировать одинарные \'

    $myVar = 'Hello world!';        
    // строка с одинарными кавычками
    $singleQuoteString = 'Я печатаю строку "'. $myVar .'"';
    // строка с одинарными кавычками 2 (трудночитаемый вариант)
    $doubleQuoteString = 'Я печатаю строку \''. $myVar .'\'';
  • Двойных кавычек касается то же правило, что одинарные, только наоборот

    $myVar = 'Hello world!';        
    // строка с двойными кавычками
    $doubleQuoteString = "Я печатаю строку '$myVar'";
    // строка с двойными кавычками 2 (трудночитаемый вариант)
    $doubleQuoteString = "Я печатаю строку \"$myVar\"";
  • Чтобы не мучиться с подстановкой переменных в строку запроса (и не только поэтому) - следует использовать подготовленные запросы: http://php.net/manual/ru/mysqli.quickstart.prepared-statements.php | Защита от SQL иньекций в php

Answer 2

Вот так нехватает конкатинации и экранирования.

$query = ' SELECT * FROM apranq_test  WHERE type = "մոտորներ" AND param_2 = \'' . $r . '\'';

Но так лучше не делать как уже писали http://php.net/manual/ru/mysqli-stmt.bind-param.php

Answer 3

А так?

$query = " SELECT * FROM apranq_test  WHERE type = 'մոտորներ' AND param_2 = '$r' ";
Answer 4
 $query = ' SELECT * FROM apranq_test  WHERE type = "մոտորներ" AND param_2 = " '.$r.' " ' ; 
READ ALSO
Как вызвать классы Yii2 в отдельном файле?

Как вызвать классы Yii2 в отдельном файле?

Суть задачи: у меня в корне проекта лежит файл serverphp

165
Установка Snipe-IT на Ubuntu 16.10

Установка Snipe-IT на Ubuntu 16.10

Всем приветДелаю все по документации с официального сайта, но застрял на этом шаге

183
Вектор из объектов класса. Ошибка дампа стэка

Вектор из объектов класса. Ошибка дампа стэка

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

254
multiple types in one declaration как исправить [требует правки]

multiple types in one declaration как исправить [требует правки]

У меня есть код на C++ с использованием qt:

392