mariadb — INSERT INTO TABLE .. переменная в запросе SQL

У меня есть PHP-скрипт, содержащий следующий запрос SQL (рабочий ОК):

$query = 'INSERT INTO persons'.
'(name,
surname
)'.'VALUES
( "'.$_REQUEST["name"].'",
"'.$_REQUEST["surname"].'")';

Где $ _REQUEST [«name»] и $ _REQUEST [«name»] — переменные, переданные из HTML-формы.
usin php 4.5 и MariaDB 5.5

Проблема возникает, когда я пытаюсь заменить людей переменной — например. $ Таблица:

$table = "persons";

$query = 'INSERT INTO '.$table.''.
'(name,
surname
)'.'VALUES
( "'.$_REQUEST["name"].'",
"'.$_REQUEST["surname"].'")';

Я пробовал разные варианты с двойными / одиночными / точками :). Но все еще борется с этим ..
Спасибо за возможный ответ.

-1

Решение

Это простой случай узнать, как одинарные и двойные кавычки работают в PHP

Попробуй это

$table = 'persons';

$query = "INSERT INTO $table (name,surname)
VALUES ( '{$_REQUEST['name']}',
'{$_REQUEST['surname']}' )";

Теперь, конечно, вы не должны больше использовать расширение mysql_ *, но если вам нужно, вы должны хотя бы попытаться санировать входные значения, прежде чем использовать их.

Таким образом, код становится

// do at least this to sanitize the inputs
$_REQUEST['name'] = mysql_real_escape_string($_REQUEST['name']);
$_REQUEST['surname'] = mysql_real_escape_string($_REQUEST['surname']);

$query = "INSERT INTO $table (name,surname)
VALUES ( '{$_REQUEST['name']}',
'{$_REQUEST['surname']}' )";
2

Другие решения

$table_name = 'persons';

$query = "insert into ".$table_name." (name,surname) values ('".$_REQUEST['name']."','".$_REQUEST['surname']."') ";
0

По вопросам рекламы [email protected]