0

私のスクリプトを解決して列「part_no」から中央の5文字を​​抽出し、データを「コア」列(varchar)に挿入しようと永遠に働いています。フォーマットは常に「000-00000-00」です。

このスクリプトをスクリプト全体の一部として実行して、新しいレコードを作成します。

スクリプトにエラーはありませんが、に挿入されませんcartons_current

非常にイライラします。

どんな助けでも大歓迎です。

レコードは作成されますが、コア列は空白です。

ここに画像の説明を入力

 <?
 $host     = "XXXXXXX";
 $username = "XXXXXXX";
 $password = "XXXXXXX";
 $db_name  = "XXXXXXX";
 $tbl_name = "cartons_current";

 mysql_connect("$host", "$username", "$password") or die("cannot connect");
 mysql_select_db("$db_name") or die("cannot select DB");

 date_default_timezone_set('America/Los_Angeles');
 $date = date("m/d/y g:i A");
 $order = "INSERT INTO cartons_current (orig_time, type, part_no, description, artwork, min, max, qty)
        VALUES
        ('$date','$_POST[type]', '$_POST[part_no]', '$_POST[description]',       '$_POST[artwork]', '$_POST[min]', '$_POST[max]', '$_POST[qty]')";




 $result = mysql_query($order);

 $query2 = "select part_no from cartons_current";
 $sel = mysql_query($query2);
 while($row = mysql_fetch_row($sel)) {
 $core_digits = explode('-',$row[0]);
 $core =$core_digits[1];
 $query3 = "insert  into cartons_current(core) values('$core')";
 $sel2 = mysql_query($query3);
 }



 if ($result) {


 $part_no = $_REQUEST['part_no'] ;

 header("location: inv_fc_new_success.php?part_no=" . urlencode($part_no));
 }
 else {
  header("location: inv_fc_new_fail.php");
 }
 ?>
4

2 に答える 2

2

既存の行のその列に値を挿入しようとしている場合は、UPDATE を使用する必要があります。1 つのクエリで実行できます。

UPDATE cartons_current
SET core = SUBSTR(part_no, 5, 5)

編集:さて、新しいレコードを挿入しようとしており、抽出されたコア値が必要です:

$core = substr($_POST['part_no'], 5, 5);
$type = mysql_real_escape_string($_POST['type']);
$part_no = mysql_real_escape_string($_POST['part_no']);
$description = mysql_real_escape_string($_POST['description']);
$artwork = mysql_real_escape_string($_POST['artwork']);
$min = mysql_real_escape_string($_POST['min']);
$max = mysql_real_escape_string($_POST['max']);
$qty = mysql_real_escape_string($_POST['qty']);
$order = "
    INSERT INTO cartons_current
    (
        orig_time,
        type,
        part_no,
        description,
        artwork,
        min,
        max,
        qty,
        core
    )
    VALUES
    (
        '$date',
        '$type',
        '$part_no',
        '$description',
        '$artwork',
        $min,
        $max,
        $qty,
        '$core'
    )";

$result = mysql_query($order);

非推奨の関数を使用している場合は、常に入力をエスケープmysql_*してください...しかし、もっと良いのは、PDO準備済みステートメントを使用してデータベースと対話することです。

于 2012-06-11T18:20:38.010 に答える
0

Explode()を試してください。split() は非推奨です

$query2 = "select part_no from cartons_current";
$sel = mysql_query($query2);
while($row = mysql_fetch_row($sel)) {
 $core_digits = explode('-',$row[0]);
 $core =$core_digits[1];
 $query3 = "insert  into cartons_current(core) values('$core')";
 $sel2 = mysql_query($query3);
}
于 2012-06-11T18:09:14.943 に答える