$keywords = explode("\n",$_POST['keywords']);
//Inserting into Database
foreach($keywords as $key => $keyword){
$keyword = strtolower(trim($keyword));
$keyword = preg_replace("/[^A-Za-z0-9' ]/", "", $keyword);
$keyword = preg_replace("/\s+/", " ", $keyword);
$insertkeywords = "INSERT IGNORE INTO kwdb (keyword) VALUES ('$keyword')";
mysql_query($insertkeywords);
}当我在数据库中有一个撇号时,我无法理解为什么这段代码不会将关键字插入数据库:
"/[^A-Za-z0-9' ]/"但当我把它移除时:
"/[^A-Za-z0-9 ]/"此脚本将记录插入数据库。
我想做什么?,我在表单上有一个文本区域。对于新行中的每个关键字,我都会根据\n来爆炸。我想从关键字中删除所有的非字母字符和非数字字符,但不希望撇号被删除。
我基本上希望所有关键字都是小写的,包括前导、尾随和额外的空格--2或更多的空格被裁剪为1--与除撇号外的任何非字母和非数字字符一起删除。
发布于 2013-01-20 10:56:39
您需要转义关键字:$insertkeywords =“将忽略插入到kwdb (关键字)值(‘.mysql_real_escape_string($keyword).”);
发布于 2013-01-20 18:53:16
谢谢你三叶草。如果没有你的帮助,我要花上好几个小时才能弄清楚!最后,我使用了字符串而不是字符串,因为mysql_real_escape_string说它在PHP5.5.0中被废弃了。因此,我不得不稍微修改一下,但到目前为止,下面的代码似乎对我很有用(以防其他人遇到这种情况)。
$con = mysqli_connect("localhost","username","password");
if (!$con)
{
die('Could not connect: ' . mysqli_error());
}
else
{
echo "Connected Successfully!";
}
//select database
mysqli_select_db($con, "test");
$keywords = explode("\n",$_POST['keywords']);
//Inserting into Database
foreach($keywords as $key => $keyword){
$keyword = preg_replace("/[^A-Za-z0-9' ]/", " ", $keyword);
$keyword = preg_replace("/\s+/", " ", $keyword);
$keyword = strtolower(trim($keyword));
//$insertkeywords = "INSERT IGNORE INTO kwdb (keyword) VALUES ('$keyword')";
$insertkeywords = "INSERT IGNORE INTO kwdb (keyword) VALUES ('".mysqli_real_escape_string($con, $keyword)."')";
mysqli_query($con, $insertkeywords);
}https://stackoverflow.com/questions/14423754
复制相似问题