1

我有一个 Mysql 表,checkboxsaved. 它有一个名为checkedtype的列varchar(45)

此列的可能值为Check1Check2等。

接下来,我使用 jQuery 发送请求并将值作为 GET 变量传递。例如:

"http://xyz?checkbox=" + checkbox  // checkbox = Check1

我使用$checkbox = $_GET['checkbox']PHP 检索它,然后触发查询:

$rv = mysql_query("insert into checkboxsaved (checked) values ('$checkbox')");

该值不会被插入。奇怪的是,当我在前面添加空格或其他字符时,例如

$rv = mysql_query("insert into checkboxsaved (checked) values (' $checkbox')"); // space
$rv = mysql_query("insert into checkboxsaved (checked) values ('r$checkbox')");

然后该值确实被插入。谁能告诉我为什么会这样?据我说,当列是varchar我应该能够插入类似Check1.

4

1 回答 1

0

我希望你做一些卫生。您应该mysql_real_escape_string()在所有用户输入的值上运行。此外,在您的情况下,您还可以对值运行正则表达式以使其匹配/^Check[0-9]+$/.

如果这不能解决您的问题(并且可能没有),您的脚本可能没有像您认为的那样接收数据。

IE。

$checkbox = mysql_real_escape_string($_GET['checkbox']);
$sql = "insert into checkboxsaved (checked) values ('$checkbox');";
//echo $sql; // uncomment this to debug
$rv = mysql_query($sql);
于 2012-11-17T02:17:42.927 回答