2013-04-29 5 views
-1

вот как я хочу, чтобы мой SQL оператор для вставки данных в БД:данные не вставляя в БД ... нужно посоветовать

INSERT into tbl_main (ars_no, phone_number, category_1, category_2, status, create_date, resolved_date, trouble_type_priority, ban_type, employee_id_name) 

значения ars_no, phone_number и create_date бы из моих прокручиваемых ... каждая строка из этих прокручиваемых затем соответствует фиксированным значениям, что у меня есть для моих TextFields, которые category_1, category_2, status, resolved_date, trouble_type_priority, ban_type, employee_id_name

так что каждая строка из моих прокручиваемой woul d - новая строка, когда она вставлена ​​в мой sql, и все строки, которые будут созданы, будут иметь добавленные фиксированные значения из моих текстовых полей ...

, но каждый раз, когда я пытаюсь ввести данные INSERT ... это дает мне сообщение о том, что он был успешным, но когда я проверил БД нет никаких данных, ниже мой SQL-код, пожалуйста, рекомендуется, если мои коды правильно или, если это может быть сделано лучше,

error_reporting(E_ALL); 
    require 'include/DB_Open.php'; 

    if(isset($_POST['DBLoad'])) 
    { 
$Category2 = $_POST['Category2']; 
    $Category3 = $_POST['Category3']; 
    $Status = $_POST['Status']; 
    $Date = $_POST['Date']; 
    $Severity = $_POST['Severity']; 
    $BanType = $_POST['BanType']; 
    $XiD = $_POST['XiD']; 
    $Ticket = $_POST['Ticket']; 

    //Process the input textareas into arrays 
    $PhoneNumber = array_map('mysql_real_escape_string', explode("\n", $_POST['PhoneNumber'])); 
    $Createdate = array_map('mysql_real_escape_string', explode("\n", $_POST['Createdate'])); 
    $RemedyTicketNo = array_map('mysql_real_escape_string', explode("\n", $_POST['PhoneNumber'])); 

    //Determine the values with the least amount of elements 
    $min_count = min($PhoneNumber, $Createdate, $RemedyTicketNo); 

    //Create array to hold INSERT values 
    $values = array(); 

    //Create the INSERT values 
    for($index=0; $index<$min_count; $index++) 
    { 
    $values[] = "('$RemedyTicketNo[$index]','$PhoneNumber[$index]','$Createdate[$index]', 
    '$Category2','$Category3','$Status','$Date','$Severity','$BanType','$XiD')"; 
    } 


    $sql=mysql_query("INSERT into tbl_main 
     (ars_no,phone_number,create_date,category_1,category_2,status,resolved_date,trouble_type_priority,ban_type,employee_id_name) 
     VALUES " . implode (',',$values)); 
    if (!$sql) { 
    die('Invalid query: ' . mysql_error()); 
    } 

    header("Location: smp_backend_test.php"); 
    } 

я думаю, что я нашел ошибку здесь, я «Я повторил свое заявление INSERT и только это сделал:

INSERT into tbl_main (ars_no, phone_number, category_1, category_2, status, create_date, resolved_date, trouble_type_priority, ban_type, employee_id_name) VALUES ('('1', '1', '1'), ('2', '2', '2')', 'SMP_Backend', 'Pending Request', 'Resolved', '2013-04-28', '5', 'I', 'AAA') 

что я хочу это делать то, что каждая строка из моего текстового поля будет связано с моим TextFields значений, есть способ, чтобы изменить мой INSERT заявление так, что она будет выполнять ниже, он должен делать это таким образом:

INSERT into tbl_main (ars_no, phone_number, category_1, category_2, status, create_date, resolved_date, trouble_type_priority, ban_type, employee_id_name) 
    VALUES ('('1', '1', '1', 'SMP_Backend', 'Pending Request', 'Resolved', '2013-04-28', '5', 'I', 'AAA'), ('2', '2', '2', 'SMP_Backend', 'Pending Request', 'Resolved', '2013-04-28', '5', 'I', 'AAA')') 
+0

Составьте свой запрос в строке и повторите его, чтобы вы могли быть уверены, что вы действительно отправляете на db. –

+1

Я знаю, что это не отвечает на ваш вопрос, но функции 'mysql_ *' [** устарели **] (http://www.php.net/manual/en/function.mysql-query.php). Вы должны использовать [MySQLi] (http://www.php.net/manual/en/book.mysqli.php) или [PDO] (http://www.php.net/manual/en/ref.pdo -mysql.php). – Mike

+0

Почему использование implode, вы уже подготовили значения части запроса? почему нет: INSERT в tbl_main (ars_no, phone_number, create_date, category_1, category_2, status, resolved_date, problem_type_priority, ban_type, employee_id_name) VALUES ('$ RemedyTicketNo [$ index]', '$ PhoneNumber [$ index]', ' $ Createate [$ index] ', ' $ Category2 ',' $ Category3 ',' $ Status ',' $ Date ',' $ Severity ',' $ BanType ',' $ XiD ')? –

ответ

0

Вместо из

$sql=mysql_query("INSERT into tbl_main 
    (ars_no,phone_number,create_date,category_1,category_2,status,resolved_date,trouble_type_priority,ban_type,employee_id_name) 
    VALUES " . implode (',',$values)); 
if (!$sql) { 
die('Invalid query: ' . mysql_error()); 
} 

использования

$sql=mysql_query("INSERT into tbl_main 
    (ars_no,phone_number,create_date,category_1,category_2,status,resolved_date,trouble_type_priority,ban_type,employee_id_name) 
    VALUES " . implode (',',$values)) or die('Invalid query: ' . mysql_error()); 

и использовать PDO или MySQLi вместо mysql_ * функций.

1

Во-первых, значения массива в двойные кавычки должны быть в фигурных скобках {} -

$values[] = "('{$RemedyTicketNo[$index]}','{$PhoneNumber[$index]}','{$Createdate[$index]}', 
'$Category2','$Category3','$Status','$Date','$Severity','$BanType','$XiD')"; 
} 

Кроме того, попробуйте добавить die('Invalid query: ' . mysql_error()) до конца вас запрос -

$sql=mysql_query("INSERT into tbl_main 
     (ars_no,phone_number,create_date,category_1,category_2,status,resolved_date,trouble_type_priority,ban_type,employee_id_name) 
    VALUES " . implode (',',$values)) or die('Invalid query: ' . mysql_error()); 

header("Location: smp_backend_test.php"); 

$sql возвращает истину , даже если mysql_query() не работает, поэтому if (!$sql) {die('Invalid query: ' . mysql_error());} не будет исполнять, где or die(..) будет


Примечание: из документов http://us2.php.net/manual/en/function.mysql-query.php - расширение mysql_* устарело на PHP 5.5.0 и будет удалено в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. См. Также MySQL: choosing an API руководство и related FAQ для получения дополнительной информации.

+0

+1 для первого ряда, я этого не знал. -1 за то, что вы используете функции mysql_ *, которые устарели. (я знаю, что пользователь использует их, но вы должны завершить свой ответ с помощью правильной альтернативы) –

+0

@STTLCU Я добавил, что обязательные функции «mysql_ *» плохи. – Sean

+0

ОК, то. +1 это;) –

1
$min_count = min(count($PhoneNumber), count($Createdate), count($RemedyTicketNo)); 
Смежные вопросы