改善&功能化查询数组

时间:2012-09-13 06:07:55

标签: php sql

需要一些帮助,建议或链接到示例或有用的教程,以便我可以了解这一点。因为我对编程很新。

我有一个名为'ore1'到'ore11'的表单中的11个选择框,可以将数据发送到$ _POST。 这个小块将其转换为另一个函数中使用的数组。

//function calculateValue($sellValue){  -- add when you figure it out
    if(isset($_POST['submit'])){
      $i = 11                           //total number of select boxes
      $pdquery = "SELECT * FROM ore
                  WHERE '".$_POST['ore1']."' 
                  LIKE id";
      $result = mysql_query($pdquery);
          $oredata1 = array();
             while ($row = mysql_fetch_row($result)) {
                  $oredata1 = $row; }
}
else {}
}

我希望能够在所有11个选择框中使用这一位代码,而不必通过获取

来复制它11次
.$_POST['ore#'].   //5th line
$oredata# = $row;  //10th line

用适当的#替换#,具体取决于它所使用的选择框。

任何提示?提前谢谢。

3 个答案:

答案 0 :(得分:1)

在您的HTML中:

<select name="ore[]">
...
</select>
<select name="ore[]">
...
</select>

在你的PHP中

if(isset($_POST['submit']) && isset($_POST['ore'])){
    foreach($_POST['ore'] as $ore){
        $ore = (int)$ore;
        $pdquery = "SELECT * FROM ore WHERE id = $ore";
        ...
    }
}

自弃用过程开始以来,也不要使用mysql_*功能

答案 1 :(得分:0)

for ($i = 1; $i <= 11; $i++) {
  $ore = 'ore'.$i;
  $pdquery = "SELECT * FROM ore WHERE '".$_POST[$ore]."' like id";
  ...

答案 2 :(得分:-2)

在for循环中执行 - 从1到11.然后你可以使用变量$ i来访问东西。

// I assume that there is some MySQLi object called $mysqli already present. You'll have to create it if it does not
if(isset($_POST['submit'])){
    $pdquery = 'SELECT * FROM ore WHERE id LIKE ?';
    $oredata = array();

    if($stmt = $mysqli->prepare($pdquery)) {
        for($i = 1; $i < 12; $i++) {
            $ore = 'ore' . $i;
            if(empty($_POST[$ore])) {
                 continue;
            }
            $oreValue = (int)$_POST[$ore];

            $stmt->bind_Param('i', $oreValue);
            $stmt->execute(); 

            $oredata[$i] = $stmt->get_result()->fetch_array(MYSQLI_ASSOC);
        }
    }
    $stmt->close();
}

这并没有考虑到可能不仅仅是那11个输入的事实。在HTML端使用数组肯定会更清晰(你只需要用foreach循环替换for循环并使用密钥代替$ore