首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用$_GET时未插入VARCHAR值

问使用$_GET时未插入VARCHAR值
EN

Stack Overflow用户
提问于 2012-11-17 10:12:32
回答 1查看 431关注 0票数 1

我有一个Mysql表,checkboxsaved。它有一个类型为varchar(45)的名为checked的列。

此列的可能值为Check1、Check2等。

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

代码语言:javascript
复制
"http://xyz?checkbox=" + checkbox  // checkbox = Check1

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

代码语言:javascript
复制
$rv = mysql_query("insert into checkboxsaved (checked) values ('$checkbox')");

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

代码语言:javascript
复制
$rv = mysql_query("insert into checkboxsaved (checked) values (' $checkbox')"); // space
$rv = mysql_query("insert into checkboxsaved (checked) values ('r$checkbox')");

然后值就会被插入。谁能告诉我为什么会这样?根据我的说法,当列是varchar时,我应该能够插入像Check1这样的内容。

EN

回答 1

Stack Overflow用户

发布于 2012-11-17 10:17:43

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

如果这不能解决您的问题(很可能不能解决),那么您的脚本很可能没有像您想象的那样接收数据。

即。

代码语言:javascript
复制
$checkbox = mysql_real_escape_string($_GET['checkbox']);
$sql = "insert into checkboxsaved (checked) values ('$checkbox');";
//echo $sql; // uncomment this to debug
$rv = mysql_query($sql);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13426998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档