@del993788

Как в mysql запрос вставить переменную, у которой значение текст?

Здравствуйте. У меня сайт отправляет в php файл слово "lux".
Его php там встречает вот таким образом:
$nnomer = $_POST['nnomer']; // то самое слово lux
$query = "SELECT datestart, dateend FROM main WHERE namenomer = '$nnomer'";

Проблема заключается в том, что слово lux должно быть в кавычках, но по факту выходит, что у меня в кавычках переменная $nnomer. И когда она в кавычках, она, переменная, становится обычным словом. То есть php ищет namenomer не lux, а $nnomer. Подскажите, как быть?
  • Вопрос задан
  • 392 просмотра
Решения вопроса 2
roswell
@roswell
и швец, и жнец, и на дуде игрец
Никогда не следует таким образом писать запросы, потому что это прямая дорога к SQL injection. Правильнее было бы устроить нечто вроде

$pdo = new PDO(/* параметры соединения с БД */);
$result = $pdo->prepare('SELECT datestart, dateend FROM main WHERE namenomer = :namenomer');
$result->execute([':namenomer' => empty($_POST['nnomer' ]) ? '' : $_POST['nnomer']]);
Ответ написан
Комментировать
doniys_a
@doniys_a
Backend-разработчик (Php, node.js, python, ruby)
А как же экранирование ? Может, лучше использовать PDO
try{
$db = new PDO("dbtype:host=yourhost;dbname=yourdbname;charset=utf8","username","password");
}catch(PDOException  $e ){
die( "Error: ".$e);
}

$query=$db->prepare("SELECT datestart, dateend FROM main WHERE namenomer = ?");
$query->execute(array($nnomer));

while($row=$query->fetch(PDO::FETCH_OBJ)) {
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы