2014-10-06 2 views
0

Я пытаюсь записать данные из формы, которую я сохраняю в массиве, в мою базу данных. К сожалению, он не работает:Запись данных из массива в базу данных

 $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() ...

+0

* «Кто-нибудь видит ошибку?» * - [** У вас или нет? **] (http://php.net/manual/en/function.error-reporting.php) и/или что говорит 'mysql_error()'? Вы принимаете успех * сразу с места в карьер * без учета возможных ошибок. –

+0

Ошибка в том, что вы отправляете [бог знает, какой мусор] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) в вашу базу данных, используя PHP функции, которые были [устарели в течение многих лет] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). – miken32

+0

где определяется '$ createdID'? –

ответ

2

Это будет работать:

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]."')"); 
        } 
} 

Не забудьте дезинфицировать, что ввод данных пользователем, чтобы не остаться с взломан или поврежденной базы данных!

1

Похоже, что вы имеете дело с $ _POST [$ _ POST ['something']]. Попробуйте уйти от $ _POST [] вокруг ключей в первом массиве

1

Вам не нужно проверять, является ли $ _POST [$ title [1]) установленным или не пустым, потому что он не установлен и пуст!

Вместо просто использовать $ название [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>"; 
    } 
} 
0

Try проверить массив $ названия, используя print_r в каждом цикле и посмотреть, хотите ли вы получить нужный массив.

может быть, вы можете попробовать

foreach($hardCodedTitles AS $title) { 
    foreach($title AS $key=>$value) { 
     echo $key ." ". $value ."<br>"; 
    } 
} 
Смежные вопросы