首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当输入字段有撇号时,Mysql insert无法工作

问当输入字段有撇号时,Mysql insert无法工作
EN

Stack Overflow用户
提问于 2013-11-18 11:42:16
回答 6查看 196关注 0票数 0

这是我第一次遇到mysql问题。我有一个输入字段,如

代码语言:javascript
复制
<input type="text" name="myfield" id="myfield" />

因此,当用户按下submit按钮时,我将使用php获取值。

代码语言:javascript
复制
$myval = $_POST['myfield'];

到目前为止一切都还好。如果我在这个输入字段中的值包含一个撇号',例如:

代码语言:javascript
复制
<input type="text" name="myfield" id="myfield" value="Niko's Dog" />

mysql查询:

代码语言:javascript
复制
mysql_query ("INSERT INTO users (myfield) VALUES ('$myval')");

无法插入数据。

有什么意见吗?我需要所有字符都是有效的。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-11-18 11:43:21

尝试添加斜杠()

代码语言:javascript
复制
$myval = addslashes($myval);
mysql_query ("INSERT INTO users (myfield) VALUES ('".$myval."')");

您可以直接使用mysql_real_escape_string。

代码语言:javascript
复制
mysql_query ("INSERT INTO users (myfield)
              VALUES ('".mysql_real_escape_string($myval)."')");
票数 3
EN

Stack Overflow用户

发布于 2013-11-18 11:43:36

当你没有逃避输入时,就会发生这种情况。

代码语言:javascript
复制
INSERT INTO users (myfield) 
VALUES ('Niko's Dog')
             ^-----------string end

你最好用事先准备好的声明。请参阅这里

票数 0
EN

Stack Overflow用户

发布于 2013-11-18 11:48:17

考虑使用准备好的陈述,以避免转义问题以及恶意输入:

代码语言:javascript
复制
$result;
if ($stmt = $mysqli->prepare("INSERT INTO users (myfield) VALUES (?)") {
    $stmt->bind_param("s", $myval);
    $stmt->execute();
    $stmt->bind_result($result);
    $stmt->fetch();
    echo "Your result is $result";
    $stmt->close();
}

您还应该使用mysqli_*,因为旧的mysql_*函数被废弃了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20046898

复制
相关文章

相似问题

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