2011-09-05 157 views
1
/* Adding Experiences */ 
$("#addExperience").click(function() { 

if(experiencectr>5){ 
     alert("WOW! But 5 experiences are enough."); 
     return false; 
} 

var newTextBoxDiv = $(document.createElement('div')) 
    .attr("id", 'ExperienceDiv' + experiencectr); 

newTextBoxDiv.html('<label>Experience No. '+ experiencectr + ' : </label>' + 
     '<input type="text" name="experience[]" id="experience' + experiencectr + '" >&nbsp;' + 
     '<input type="text" id="year' + experiencectr + 
     '" size="5" name="years[]"><label>years</label>'); 

newTextBoxDiv.appendTo("#ExperienceBoxesGroup"); 


experiencectr++; 
}); 

在上面的代码,它增加了两个领域:经验和多年文本框Foreach的两个循环TextFields,可能吗?

foreach ($_POST['experience'] as $experience) { 
// save $experience to database 
$sql_experience = "INSERT INTO experiences(number,experience) 
values ('$number','$experience')"; 
if($result3 = mysql_query($sql_experience ,$db)) 
    { 
      foreach ($_POST['years'] as $years) { 
      $sql_years = "UPDATE experiences SET years=$years WHERE experience=$experience"; 
      if($result = mysql_query($sql_years ,$db)) 
       { } 
      else 
       { echo "ERROR: ".mysql_error(); } 
      } 
    } 
else 
    { echo "ERROR: ".mysql_error(); } 
} 

在上面这段代码,它保存到数据库中,但该领域列在所有行相同的值。你们能帮我吗?

我需要一个答案:d

回答

1

你必须得到索引访问其他数组中的值:

foreach($_POST['experiences'] as $idx => $experience) { 
    $sql = "INSERT INTO experiences (number, experience, years) 
      VALUES ({$idx}, {$experience}, {$_POST['years'][$idx]}"); 
    // execute query, etc 
} 

这是可行的,但你可能不应该做这种方式因为它会让您打开SQL injections。一个更好的办法来做到这一点是通过消毒您输入(例如:mysql_reaL_escape_string或其mysqli的等价物)

去将using prepared statements的最佳方式:

$stmt = $dbh->prepare("INSERT INTO experiences (number, experience, years) 
         VALUES (?, ?, ?)"); 

foreach($_POST['experiences'] as $idx => $experience) { 
    // pass values and execute 
    $stmt->execute(array($idx, $experience, $_POST['years'][$idx])); 
} 
+0

对不起复制并粘贴第二个代码,但我得到了一个错误:致命错误:调用成员函数prepare()在$ stmt = $ dbh-> prepare(“INSERT INTO experience(number,experience,years)VALUES(?,?,?)” );'。呃我会怎么做?我',在这里不是那么好:) –

+0

YEY!我得到它的工作!谢谢:)我用第一个.. –