永远尝试解析我的脚本以从“part_no”列中提取中间五个字符并将数据插入“core”列(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");
}
?>
答案 0 :(得分: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_*
函数,请始终escape输入...但更好的是,使用PDO和prepared statements与您进行互动数据库中。
答案 1 :(得分:0)
试试explode()。 split()是deprecated。
$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);
}