2013-04-29 117 views
-1

这里是我多么希望我的SQL语句将数据插入到数据库:中ars_nophone_numbercreate_date数据未插入到数据库......需要提醒

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) 

值将来自我的文字区域...然后从这些文字区域的每一行将对应于我拥有文本框其是category_1category_2statusresolved_datetrouble_type_priorityban_typeemployee_id_name

所以从我的文本域的每一行的竟被固定值当插入到我的SQL和所有行将创建的所有行都将从我的文本字段中添加固定值... d是一个新行...

但每次我尝试插入数据...它给我一个消息它是成功的,但是当我检查数据库没有数据,下面是我的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') 

我想要什么它做的是,从我的textarea的每一行会关联到我的文本框的值,有没有修改自己的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的内容。 – 2013-04-29 07:42:19

+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 2013-04-29 07:42:24

+0

为什么使用implode,你已经准备好值的一部分了?为什么不:插入到tbl_main (ars_no,phone_number,create_date,category_1,category_2,status,resolved_date,trouble_type_priority,ban_type,employee_id_name) VALUES('$ RemedyTicketNo [$ index]','$ PhoneNumber [$ index]', $ Createdate [$ index]', '$ Category2','$ Category3','$ Status','$ Date','$ Severity','$ BanType','$ XiD')? – 2013-04-29 07:46:26

回答

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将返回true ,即使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开始已被弃用,并且将来会被删除。应该使用MySQLiPDO_MySQL扩展名。有关更多信息,另请参阅MySQL: choosing an API指南和related FAQ

+0

第一行+1,我不知道。 -1,因为你使用的是不推荐使用的mysql_ *函数。 (我知道用户正在使用这些,但是,您应该使用正确的替代方法来完成您的答案) – 2013-04-29 08:34:53

+0

@STTLCU我已经添加了强制性'mysql_ *'函数是不好的。 – Sean 2013-04-29 13:04:21

+0

好的,那么。 +1是的;) – 2013-04-29 13:15:51

1
$min_count = min(count($PhoneNumber), count($Createdate), count($RemedyTicketNo));