我遇到了一个奇怪的问题。我的表格中有一个文本列。我将从html格式的textarea中取出的文本插入到mysql数据库中。
$sql="INSERT INTO mytable ( `username`, `firstname`, `lastname`,`about`,`email`) VALUES ('$username', '$fname', '$lname','$about','$email');";
这里是TEXT类型列
这是我的textarea
<textarea id="oabout" name="about" rows="10" placeholder="Aboutyourself"></textarea>
如果我插入以下文字,那么插入工作正常
I am a student
但如果我尝试插入以下文字我会收到错误
I'm a student
错误显示为
您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在学生附近使用正确的语法,&#39; abc@gmail.com')&#39;在第1行
如何进行更改以便第二个文本也插入数据库?
答案 0 :(得分:1)
问题似乎是您的单引号未被转义。如果您使用的是PHP,那么这个模块将在输入字符串中转义需要转义的所有内容:http://us3.php.net/manual/en/pdo.quote.php
您的usecase未经测试的示例,$ conn必须是您的mysql连接字符串:
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
$about = 'I'm a student';
$quotedAbout = $conn->quote($about);
print $quotedAbout;
?>
基本上,您只需为要自动转义的每个TEXT字段调用$conn->quote($someVariable)
。
致以最诚挚的问候,