插入到表 中.SQL 查询中的变量


INSERT INTO TABLE .. variable in sql query

我有包含以下SQL查询(工作oK)的php脚本:

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

其中 $_REQUEST["name"] 和 $_REQUEST["name"] 是从 html 表单传递的变量。
usin php 4.5 和 MariaDB 5.5

当我尝试用变量代替人时,问题就出现了 - 例如。 $table:

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

我一直在尝试双量子/单量子/点:)的不同变化。但仍然为此苦苦挣扎..感谢可能的答案。

这是一个知道单引号和双引号在 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']}' )";
$table_name = 'persons';
$query = "insert into ".$table_name." (name,surname) values ('".$_REQUEST['name']."','".$_REQUEST['surname']."') ";