2014-03-12 35 views
0

如果之前有人问过这个问题,但我并不理解我使用google找到的大部分内容,对不起。我只是在学习如何做到这一点,所以请耐心等待。php中的特殊字符替换为mysql插入脚本

我创建了一个可以插入数据到mysql 5.x数据库的工作“INSERT”php脚本,它的工作原理没有问题,但是我遇到的问题是,如果用户用“or”脚本在用户处吐出一个“错误插入新记录”的字段,我需要知道如何在脚本尝试将信息插入到数据库之前,自动用脚本替换“\”

什么我目前所面对的是....

<?php 

if (isset($_POST['submitted'])) { 

include('../connect/connect-mysql.php'); 

$Colorist = $_POST['Colorist']; 
$Active = $_POST['Active']; 

$sqlinsert = "INSERT INTO colorist (Colorist, Active) VALUES ('$Colorist', '$Active')"; 

if (!mysqli_query($dbcon, $sqlinsert)) { 
    die('error inserting new record'); 
    }//end of nested if statement 
$newrecord = "New record added"; 

} //end of main if 


?> 
<html> 
<head> 
</head> 
<body> 
<form method="post" action="insertcolorist.php"> 
<input type="hidden" name="submitted" value="true" /> 
<fieldset> 
<legend>New Colorist Data</legend> 
<table border="1" width="100%" style="border-collapse: collapse"> 
<tr><th colspan="2"><font face="Verdana" size="2">Colorist Data</font></th></tr> 
<tr><th><font face="Verdana" size="1"><label>Colorist: </label></font></th><td><font size="1" face="Verdana"><input type="text" size="150" name="Colorist" /></font></td></tr> 
<tr><th><font face="Verdana" size="1"><label>Is the Colorist Active: </label></font></th><td><font size="1" face="Verdana"><select size="1" name="Active"><option value="">Select...</option><option value="Yes">Yes</option><option value="No">No</option></option></select></font></td></tr> 
</table> 
</fieldset> 
<br> 
<input type="submit" value="add new colorist" /> 
</form> 
<?php 
echo $newrecord // New record added statement added at the top 
?> 
+0

的可能重复[我怎样才能防止在PHP中SQL注入?(http://stackoverflow.com/questions/60174/how-可以防止SQL注入在PHP) –

+0

也字体标记已弃用一个年龄... –

+0

不,我不想防止的东西,这是为我自己的使用(和一对夫妇的朋友帮助我)填充我的数据库更容易...我不想阻止一个条目,我想这样做'或'不要阻止我这样做,因为我也将在另一个插入脚本我使用这些信息,包括插入带有语音引号的文本块 – JoJo

回答

0

有清洁输入字符串mysqli的功能,这是因为使用

容易
$Colorist = mysqli_real_escape_string($_POST['Colorist']); 
$Active = mysqli_real_escape_string($_POST['Active']); 

这应该对这种类型的最常见的问题是不够

+0

这会去我的地方$ Colorist = $ _POST ['Colorist']; ?或者是它在一个单独的区域,因为我试过它,并没有工作 – JoJo

+0

我的错,对不起,忘了一个参数: '$ colorist = mysqli_real_escape_string($ dbcon,$ _POST ['Colorist']); $ Active = mysqli_real_escape_string($ dbcon,$ _POST ['Active']);' 是的,它会在你现在设置的同一行上$ Colorist – Olvathar

+0

确定这个脚本是完美的,但我试图实现它在另一个完全相同类型的插入脚本上(唯一不同的是字段数量和输入数据的位置,它创建了一个空记录。 \t \t $功率= mysqli_real_escape_string($ dbcon,[ '功率']); \t \t $的SQLInsert = “INSERT INTO的PowerCat(电源)VALUES( '$电源')”;' – JoJo