我有包含以下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']."') ";