$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 ]/"
此脚本将记录插入数据库。
我想做什么? 我在表格上有一个textarea。对于新行上的每个关键字,我会根据\ n进行爆炸。我想从关键字中删除所有非字母和非数字字符,但不希望删除撇号。
我基本上希望所有关键字都是小写的,包括前导,尾随和额外的空格 - 将2个或更多空格修剪为一个 - 删除除了撇号之外的任何非字母和非数字字符。
答案 0 :(得分:0)
你需要转义你的关键字:$ insertkeywords =“INSERT IGNORE INTO kwdb(keyword)VALUES('”。mysql_real_escape_string($ keyword)。“')”;
答案 1 :(得分:0)
谢谢clover。如果没有你的帮助,我需要花费很多时间来确定这一点!我最终使用mysqli_real_escape_string而不是mysql_real_escape_string,因为mysql_real_escape_string表示从PHP 5.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);
}