0

永远工作试图解决我的脚本以从列“part_no”中提取中间五个字符并将数据插入“核心”列(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。您可以在一个查询中完成:

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 回答