-1

SQL ステートメントでデータを db に 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)

の値はars_no、テキストエリアから取得さphone_numberれます...これらのテキストエリアのcreate_date各行は、テキストフィールドの固定値category_1category_2対応statusresolved_dateますtrouble_type_priorityban_typeemployee_id_name

だから私のテキストエリアからの各行は私のSQLに挿入されたときに新しい行になり、作成されるすべての行はすべて私のテキストフィールドから追加された固定値を持つことになります...

しかし、データを挿入しようとするたびに...成功したというメッセージが表示されますが、データベースをチェックするとデータがありません。以下は私の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')

私がやりたいのは、テキストエリアの各行がテキストフィールドの値に関連付けられることです.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')')
4

3 に答える 3

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");

$sqlmysql_query()失敗してもtrueを返すため、実行さ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: APIガイドの選択および関連する FAQも参照してください。

于 2013-04-29T07:46:05.503 に答える
1
$min_count = min(count($PhoneNumber), count($Createdate), count($RemedyTicketNo));
于 2013-04-29T08:30:25.087 に答える
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());

また、mysql_* 関数の代わりに PDO または Mysqli を使用します。

于 2013-04-29T07:45:48.590 に答える