PHP页面中的更新查询不会更新多行,即使没有收到错误消息
我正在使用PHP页面更新两个表。第一个表有一行要更新,第二个表有多行要在where子句上更新。问题是第一个表正在成功更新,但第二个表没有更新。虽然没有收到任何错误。set中的变量和语句中的where子句是从上一页传递过来的。我在不同的地方使用了echo来检查值是否正确传递。尽管一切看起来都很好,但代码仍然不起作用PHP页面中的更新查询不会更新多行,即使没有收到错误消息,php,oracle11g,Php,Oracle11g,我正在使用PHP页面更新两个表。第一个表有一行要更新,第二个表有多行要在where子句上更新。问题是第一个表正在成功更新,但第二个表没有更新。虽然没有收到任何错误。set中的变量和语句中的where子句是从上一页传递过来的。我在不同的地方使用了echo来检查值是否正确传递。尽管一切看起来都很好,但代码仍然不起作用 <?php include 'Millsdbconnection_test.php'; date_default_timezone_set("Asia/Kolkata"
<?php
include 'Millsdbconnection_test.php';
date_default_timezone_set("Asia/Kolkata");
session_start();
$var_value = $_POST['dsg'];
$var_value1 = $_SESSION['Heat'];
echo $var_value;
echo $var_value1;
insert_billet($var_value,$var_value1);
function insert_billet($dsg,$HeatId){
include 'Millsdbconnection_test.php';
$dsg2=$dsg;
$HeatId2=$HeatId;
$sql = 'update stg_bil_layer set STEEL_GRADE_ID= :xx where heat_id= :yy';
$query = oci_parse($c,$sql);
oci_bind_by_name($query, ':xx', $dsg);
oci_bind_by_name($query, ':yy', $HeatId);
oci_execute($query);
if (!oci_execute($query) ){
$errd=oci_error($query);
trigger_error('Query failed: '
.$errd['message'],E_USER_ERROR);
}
echo 'Here';
echo $dsg2;
echo '<br>';
echo $HeatId2;
$sql2 = 'update stg_billet set STEEL_GRADE_ID=:aa where
heat_id=:bb';
$query2= oci_parse($c,$sql2);
oci_bind_by_name($query2, ':aa', $dsg2);
oci_bind_by_name($query2, ':bb', $HeatId2);
oci_execute($query2);
if (!oci_execute($query2) ){
$errd=oci_error($query2);
trigger_error('Query failed: '
.$errd['message'],E_USER_ERROR);
}else{
echo "<script type='text/javascript'>
window.onload = function () { alert('Steel Grade Updated
!!!!'); }
</script>";
//echo $count;
}
}
?>
您可以在数据库上启用“安全更新”选项。这将防止在没有指定主键的情况下更新行
在MySQL和Oracle(可能还有更多)中,这可以通过以下方式禁用:SET SQL\u SAFE\u UPDATES=0代码>现在发生了哪个错误?请上传错误截图。我已经发布了我的代码。实际上没有错误,只是第二个更新查询没有给出任何结果。@ravipandey第一个问题是每个查询执行两次。当您选中if(!oci_execute($query))
时,您执行的查询与前一行相同。我会删除第一次和第二次查询之前的调用。但这对我来说一直都很有效,而且在任何情况下,第一次查询都成功地更新了第一个表,问题只在于第二次查询。很抱歉,我没有提前添加代码。您可以看到有两个更新查询。第一个正在成功执行,而第二个未成功执行。