我尝试插入一个人的细节,它已成功插入。如果我签入DB“相同数据插入3次”。为什么数据插入3次?
我在数据库中有这些数据。
id name dob gen
1 James 12-03-1977 M
2 James 12-03-1977 M
3 James 12-03-1977 M
PHP类
class Detail
{
function savePerson_detail($vars){
foreach($vars as $key => $value){
if(is_numeric($key) && $value >0){
$qry = sprintf("INSERT INTO cca_student_list(per_name, per_dob, per_gen) VALUES('%s', '%s', '%s')",
mysql_real_escape_string($vars['name']),
mysql_real_escape_string($vars['dob']),
mysql_real_escape_string($vars['gen']));
mysql_query($qry) or die(mysql_error());
if($qry)
{
print 'Successfully Insert your details';
}
}
}
Html Page
<?php
$detail = new Detail();
if(isset($_POST['btnSaveDetail'])){
$detail->savePerson_detail($_POST);
}?>
答案 0 :(得分:1)
您实际上运行了三次查询,这就是您插入三次数据的原因。只需运行一次查询就可以了。
要执行此操作,您需要更改代码:首先完整清理输入数据,然后运行查询。您当前正在挑选$vars
的每个元素(包含三个元素),然后运行查询每个时间。
一步一步地走了一步:
function savePerson_detail($vars)
{
// validate function input
foreach($vars as $key => $value)
{
if(!is_numeric($key) || !$value >0)
return;
}
// build sql query
$qry = sprintf(
"INSERT INTO cca_student_list(per_name, per_dob, per_gen) VALUES('%s', '%s', '%s')",
mysql_real_escape_string($vars['name']),
mysql_real_escape_string($vars['dob']),
mysql_real_escape_string($vars['gen'])
);
// run sql query
$result = mysql_query($qry) or die(mysql_error());
// check query result
if($result)
{
print 'Successfully Insert your details';
}
}
答案 1 :(得分:0)
因为您使用了
foreach($vars as $key => $value){
传递给它的$vars
或$_POST
看起来像这样。
$_POST['name'] = 'James';
$_POST['dob'] = '12-03-1977';
$_POST['gen'] = 'M';
所以它经历了3次$_POST
个项目。
我想你可以删除验证并按照这样做。
function savePerson_detail($vars){
$qry = sprintf("INSERT INTO cca_student_list(per_name, per_dob, per_gen) VALUES('%s', '%s', '%s')", mysql_real_escape_string($vars['name']), mysql_real_escape_string($vars['dob']), mysql_real_escape_string($vars['gen']));
mysql_query($qry) or die(mysql_error());
if($qry)
{ print 'Successfully Insert your details'; }
}
答案 2 :(得分:0)
除非我遗漏了什么,这是你想要做的吗?
class Detail
{
function savePerson_detail($vars) {
foreach($vars as $key => $value) {
$vars[$key] = mysql_real_escape_string($value);
}
if($qry)
{
print 'Successfully Insert your details';
}
$qry = sprintf("INSERT INTO cca_student_list(per_name, per_dob, per_gen) VALUES('%s', '%s', '%s')";
mysql_query($qry) or die(mysql_error());
}