【问题标题】:Write data from array into database将数组中的数据写入数据库
【发布时间】:2014-10-06 22:40:38
【问题描述】:

我尝试将保存在数组中的表单中的数据写入数据库。不幸的是,它不起作用:

        $hardCodedTitles = array(
                    array("Lead inserted by", $_POST["input_lead_insert"]),
                    array("Staffname", $_POST["input_Staffname"]),
                    array("Staff email", $_POST["input_Staffemail"]),
                    array("Workplace", $_POST["input_Workplace"]),
                    array("Gender", $_POST["input_gender"]),
                    array("First Name", $_POST["input_Firstname"]),
                    array("Last Name", $_POST["input_Lastname"]),
                    array("Company", $_POST["input_Company"]),
                    array("Job Position", $_POST["input_Jobposition"]),
                    array("Industry", $_POST["input_Industry"]),
                    array("Mailstop", $_POST["input_Mailstop"]),
                    array("Street", $_POST["input_Street"]),
                    array("Zip Code", $_POST["input_ZIP-Code"]),
                    array("City", $_POST["input_City"]),
                    array("Country", $_POST["input_Country"]),
                    array("Email", $_POST["input_E-Mail"]),
                    array("Phone Number", $_POST["input_PhoneNumber"]), 
                );
                foreach($hardCodedTitles as $title) {
                    if(isset($_POST[$title[1]]) && $_POST[$title[1]] != "") {
                        mysql_query("INSERT INTO lead_data (lead_id, title, value) VALUES ($createdID, '".$title[0]."', '".$title[1]."')");
                    }
                }

有人看到错误吗? 当我使用 print_r() 时,数据似乎正确存储在数组中...

【问题讨论】:

  • “有人看到错误了吗?” - Do you, or are you? 和/或mysql_error() 说了什么?你假设成功马上没有考虑可能的错误。
  • 错误是您将god knows what garbage 发布到数据库中,使用的是deprecated for years 的PHP 函数。
  • $createdID 定义在哪里?
  • “不起作用”是什么意思?“不起作用”不足以让我们理解问题。当你尝试它时发生了什么?你收到错误信息了吗?你得到不正确的结果吗?您得到 no 结果了吗?如果结果不正确,是什么导致它们不正确?你期待什么?你得到任何正确的结果了吗?如果是这样,它们是什么?不要让我们猜测。
  • 所以$title[1] 是从用户空间发布的值,但您正在寻找$_POST[$title[1]]?我什至无法理解这是要做什么......

标签: php sql arrays forms


【解决方案1】:

这将起作用:

foreach($hardCodedTitles as $title) {
                    if(isset($title[1]) && $title[1] != "") {
                        mysql_query("INSERT INTO lead_data (lead_id, title, value) VALUES ($createdID, '".$title[0]."', '".$title[1]."')");
                    }
}

不要忘记清理用户输入,以免留下被黑或损坏的数据库!

【讨论】:

    【解决方案2】:

    您似乎正在处理 $_POST[$_POST['something']]。尝试在第一个数组中的键周围避开 $_POST[]

    【讨论】:

      【解决方案3】:

      您无需检查 $_POST[$title[1]) 是否已设置或不为空,因为它未设置且为空!

      只需使用 $title[1],就像这样:

      (编辑:以下代码供您学习/调试:))

      $_POST["input_lead_insert"] = 1;
      $_POST["input_Staffname"] = 2;
      $_POST["input_Staffemail"] = 3;
      $_POST["input_Workplace"] = 4;
      $_POST["input_gender"] = 5;
      $_POST["input_Firstname"] = 6;
      $_POST["input_Lastname"] = 7;
      $_POST["input_Company"] = 8;
      $_POST["input_Jobposition"] = 9;
      $_POST["input_Industry"] = 10;
      $_POST["input_Mailstop"] = 11;
      $_POST["input_Street"] = 12;
      $_POST["input_ZIP-Code"] = 13;
      $_POST["input_City"] = 14;
      $_POST["input_Country"] = 15;
      $_POST["input_E-Mail"] = 16;
      $_POST["input_PhoneNumber"] = 17;
      
      $hardCodedTitles = array(
          array("Lead inserted by", $_POST["input_lead_insert"]),
          array("Staffname", $_POST["input_Staffname"]),
          array("Staff email", $_POST["input_Staffemail"]),
          array("Workplace", $_POST["input_Workplace"]),
          array("Gender", $_POST["input_gender"]),
          array("First Name", $_POST["input_Firstname"]),
          array("Last Name", $_POST["input_Lastname"]),
          array("Company", $_POST["input_Company"]),
          array("Job Position", $_POST["input_Jobposition"]),
          array("Industry", $_POST["input_Industry"]),
          array("Mailstop", $_POST["input_Mailstop"]),
          array("Street", $_POST["input_Street"]),
          array("Zip Code", $_POST["input_ZIP-Code"]),
          array("City", $_POST["input_City"]),
          array("Country", $_POST["input_Country"]),
          array("Email", $_POST["input_E-Mail"]),
          array("Phone Number", $_POST["input_PhoneNumber"]), 
      );
      foreach($hardCodedTitles as $title) {
          if(isset($title[1]) && $title[1] != "") {
              // will only display the numbers for the purpose of your debugging
              echo $title[1]."<br>";
          }
      }
      

      【讨论】:

        【解决方案4】:

        尝试在每个循环中使用 print_r 检查数组 $title,看看是否得到了所需的正确数组。

        也许你可以试试

        foreach($hardCodedTitles AS $title) {
           foreach($title AS $key=>$value ) {
              echo $key ." ". $value ."<br>";
           }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-02-19
          • 2022-01-18
          • 1970-01-01
          • 2019-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多