【发布时间】:2020-07-05 03:34:12
【问题描述】:
我正在开发一个基于 Web 的 PHP 表单,该表单当前连接到 Oracle 数据库。我正在尝试使该功能正常工作,以便在用户提交表单后,它将根据作业编号检查是否存在行,如果存在则更新,否则插入值。
目前它返回了一个内部服务器错误,我不太明白为什么。
下面是代码sn-p...
<?php
//connect to database
$DBC = oci_connect("username", "password", "server");
set_time_limit ( 120 );
$jobNumber = $_POST['jobNumber'];
$C1utShortAmount = $_POST['1CutShortAmount'];
$1Scrap = $_POST['1Scrap'];
$1Repair = $_POST['1Repair'];
$1TotalQty = $_POST['1TotalQty'];
$2Scrap = $_POST['2Scrap'];
$2RaisedParts = $_POST['2RaisedParts'];
$2Repair = $_POST['2Repair'];
$2TotalQty = $_POST['2TotalQty'];
$3Repair = $_POST['3Repair'];
$3Scrap = $_POST['3Scrap'];
$3Repair = $_POST['3SmtRepair'];
$3RaisedParts = $_POST['3RaisedParts'];
$3TotalQty = $_POST['3TotalQty'];
$createdBy = $_POST['usersname'];
$sqlSelect = "SELECT * FROM wip.table1 WHERE JOB_NUMBER = '$jobNumber'";
$SQL = "INSERT INTO wip.table1
( job_number,
1_Cut_Short_Amount,
1_Scrap,
1_Repair,
1_Total_Qty,
2_Scrap,
2_Raised_Parts,
2_Repair,
2_Total_Qty,
3_Repair,
3_Scrap,
3_Repair,
3_Raised_Parts,
3_Total_Qty
)
VALUES (
'$jobNumber',
'$1CutShortAmount',
'$1Scrap',
'$1Repair',
'$1TotalQty',
'$2Scrap',
'$2RaisedParts',
'$2Repair',
'$2TotalQty',
'$3Repair',
'$3Scrap',
'$3Repair',
'$3RaisedParts',
'$3TotalQty'
)";
$sql2 = "UPDATE wip.table1
SET 1CUT_SHORT_AMOUNT = '$1CutShortAmount',
1SCRAP = '$1Scrap',
1REPAIR = '$1Repair',
1TOTAL_QTY = '$1TotalQty',
2SCRAP = '$2Scrap',
2RAISED_PARTS = '$2RaisedParts',
2SMT_REPAIR = '$2Repair',
2TOTAL_QTY = '$2TotalQty',
3REPAIR = '$3Repair',
3SCRAP = '$3eScrap',
3SMT_REPAIR = '$3SmtRepair',
3RAISED_PARTS = '$3RaisedParts',
3TOTAL_QTY = '$3TotalQty'
WHERE JOB_NUMBER LIKE '$jobNumber'";
if(oci_num_rows($sqlSelect) > 0){
$stmt = oci_parse($DBC,$SQL2);
$rc = oci_execute($stmt);
if (!$rc)
{
$error = oci_error($stmt);
var_dump($error);
}
oci_free_statement($stmt);
}
else
{
$stmt1 = oci_parse($DBC,$SQL);
$rc = oci_execute($stmt1);
if (!$rc)
{
$error = oci_error($stmt1);
var_dump($error);
}
oci_free_statement($stmt1);
}
【问题讨论】:
-
“它现在带回一个内部服务器错误”然后检查您的日志/启用错误报告。
-
$<integer>- 很确定变量不能以整数开头。 -
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。
标签: php sql oracle variables sql-insert