在将值插入Oracle时如何迭代唯一的变量名?

如何解决在将值插入Oracle时如何迭代唯一的变量名?

在我的PHP代码中,我有这样命名/定义的变量:

$comment_1 = $_POST["A_comment"];
$comment_2 = $_POST["B_comment"];
$comment_3 = $_POST["C_comment"];

我正在尝试使用迭代方法将这些变量中的值插入Oracle,以在每个变量名的末尾提供要使用的数字,如下所示:

for($i=1;$i<4;$i++) {
    $sql2 = "INSERT INTO i_avail(IA_COMMENTS) VALUES('$comment_$i')";
    $stid2 = oci_parse($connect,$sql2);
    $r = oci_execute($stid2);
}

不是从三个$ POST引用中插入期望值(仅文本),而是在表中插入了三个数字(数字1,2和3)。我猜这是因为找不到$ comment,而是使用$ i作为值而发生的。换句话说,它没有像我希望的那样处理变量名。

如何在INSERT语句中配置变量名称,以使其将我的变量名称识别为“ $ comment_1”,“ $ comment_2”和“ $ comment_3”?我需要使用不同的引号还是逃脱某些东西?

解决方法

代码中的

$ comment_ $ i不是初始化变量的正确方法,这就是它显示错误值的原因。这应该可以解决问题。动态变量生成是用于此目的的术语。

for($i=1;$i<=4;$i++) {
    $variable = ${"comment_" . $i};
    $sql2 = "INSERT INTO i_avail(IA_COMMENTS) VALUES('$variable')";
}
,

将绑定变量用于安全性(以避免SQL注入攻击)以及性能和可伸缩性。

也不要提交超过必要的内容。

尝试:

$numvalues = 4;

$comment_1 = "A_comment";
$comment_2 = "B_comment";
$comment_3 = "C_comment";
$comment_4 = "D_comment";

$sql = "INSERT INTO i_avail (ia_comments) VALUES(:bv)";
$s = oci_parse($c,$sql);
if (!$s) {
    $m = oci_error($c);
    trigger_error('Could not parse statement: '. $m['message'],E_USER_ERROR);
}

for ($i=1; $i<=$numvalues; $i++) {

    $variable = ${"comment_" . $i};

    $r = oci_bind_by_name($s,':bv',$variable);
    if (!$r) {
        $m = oci_error($s);
        trigger_error('Could not bind a parameter: '. $m['message'],E_USER_ERROR);
    }

    // Only commit once after all data has been inserted
    $commitmode = $i == $numvalues ? OCI_COMMIT_ON_SUCCESS : OCI_NO_AUTO_COMMIT;

    $r = oci_execute($s,$commitmode);
    if (!$r) {
        $m = oci_error($s);
        trigger_error('Could not execute statement: '. $m['message'],E_USER_ERROR);
    }

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?