Php 从oci8 oracle数据库中获取一行
我有一个从oracle表返回一行的函数 我不熟悉从oci8返回数据。我希望您能帮助我优化函数,以返回一个结果 我考虑过将ROWNUM=1添加到sql中,但不确定这是否是最好的情况。此外,返回$course_清单['sub_DESC']的索引0似乎有些草率Php 从oci8 oracle数据库中获取一行,php,sql,oracle,Php,Sql,Oracle,我有一个从oracle表返回一行的函数 我不熟悉从oci8返回数据。我希望您能帮助我优化函数,以返回一个结果 我考虑过将ROWNUM=1添加到sql中,但不确定这是否是最好的情况。此外,返回$course_清单['sub_DESC']的索引0似乎有些草率 function getSubject($term_code = false, $subj_code = false) { if(!$term_code || !$subj_code) return false;
function getSubject($term_code = false, $subj_code = false)
{
if(!$term_code || !$subj_code)
return false;
$stid = oci_parse($this->conn, "SELECT SUBJECT_DESC FROM szvcourses WHERE TERM_CODE = '{$term_code}' AND SUBJ_CODE = '{$subj_code}'");
oci_execute($stid);
oci_fetch_all($stid, $course_listing);
if(count($course_listing['SUBJECT_DESC']) == 0)
return false;
return $course_listing['SUBJECT_DESC'][0];
}
我不是PHP程序员,但看起来您正在构造一个包含搜索值的SQL语句。这样做是不好的 原因1:SQL注入 理由2。Oracle有一个最近的SQL库。如果SQL已经在池中,Oracle将不必再次解析SQL 您应该改用参数。代码应该是这样的(语法不正确,因为我不懂PHP):
如果希望只返回一行,则最好合并
,其中ROWNUM=1
。这种方法确保您处理的唯一数据是您想要的确切数据
SELECT SUBJECT_DESC FROM szvcourses WHERE TERM_CODE = '{$term_code}' AND SUBJ_CODE = '{$subj_code}' AND ROWNUM = 1");
谢谢,使用oci\u bind\u by\u name w/ROWNUM=1
SELECT SUBJECT_DESC FROM szvcourses WHERE TERM_CODE = '{$term_code}' AND SUBJ_CODE = '{$subj_code}' AND ROWNUM = 1");