这是我第一次遇到mysql问题。我有一个输入字段,如
<input type="text" name="myfield" id="myfield" />因此,当用户按下submit按钮时,我将使用php获取值。
$myval = $_POST['myfield'];到目前为止一切都还好。如果我在这个输入字段中的值包含一个撇号',例如:
<input type="text" name="myfield" id="myfield" value="Niko's Dog" />mysql查询:
mysql_query ("INSERT INTO users (myfield) VALUES ('$myval')");无法插入数据。
有什么意见吗?我需要所有字符都是有效的。
发布于 2013-11-18 11:43:21
尝试添加斜杠()
$myval = addslashes($myval);
mysql_query ("INSERT INTO users (myfield) VALUES ('".$myval."')");您可以直接使用mysql_real_escape_string。
mysql_query ("INSERT INTO users (myfield)
VALUES ('".mysql_real_escape_string($myval)."')");发布于 2013-11-18 11:43:36
当你没有逃避输入时,就会发生这种情况。
INSERT INTO users (myfield)
VALUES ('Niko's Dog')
^-----------string end你最好用事先准备好的声明。请参阅这里
发布于 2013-11-18 11:48:17
考虑使用准备好的陈述,以避免转义问题以及恶意输入:
$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_*函数被废弃了。
https://stackoverflow.com/questions/20046898
复制相似问题