将PHP变量传递给oci_parse中的sql查询

我将PHP varibale传递给oracle sql查询。 但它没有正确地给我ORA错误,如 - 无效的字符。 我尝试将varibale转义为\'$ sid \',这会导致错误,但查询不会返回任何内容。
有没有办法将PHP变量传递给oracle查询</ p>

  if(isset($ _ POST ['action']))
{
$ sid = $ _POST ['action'];
$ stid = oci_parse($ conn,'SELECT emp from table emp ='$ sid '');
oci_execute($ stid);
}
</ code> </ pre>

为简洁起见,我已移至数据库连接部分。 </ p>
</ div>

展开原文

原文

I am passing a PHP varibale into a oracle sql query. but its not taking it properly giving me ORA errors like - invalid character. I tried escaping the varibale as \'$sid\', this makes error go, but the query doesnt return anything. Is there a way to pass PHP variable to oracle query

if(isset($_POST['action']))
{
   $sid = $_POST['action'];
   $stid = oci_parse($conn, 'SELECT emp from table emp='$sid'');
   oci_execute($stid);
}

I have removed to the database connection part for brevity.

doumouyi4039
doumouyi4039 然后我想,你应该将你的php变量绑定到Oracle占位符。请参阅此处的示例部分:php.net/manual/en/function.oci-bind-by-name.php
4 年多之前 回复
dongpei2835
dongpei2835 这也行不通。如果我用静态值替换变量,它就可以工作。例如$stid=oci_parse($conn,'SELECTempfromtableemp=\'sam\'');
4 年多之前 回复
douxunchen3498
douxunchen3498 尝试在查询结尾添加分号。“从表emp='$sid'中选择emp;”
4 年多之前 回复
doufen1890
doufen1890 我也试过了。但仍然得到错误:oci_execute():ORA-00911:第28行/opt/lampp/htdocs/process.php中的无效字符
4 年多之前 回复
doushan9415
doushan9415 第一件事:修复你的引号。将外部变为双引号:“从表emp='$sid'中选择emp\”
4 年多之前 回复

1个回答



'table emp from table emp = \'$ sid \''</ code>是一个你准确传递的字符串 就像Oracle一样,这就是为什么它不起作用。</ p>

你需要使用 oci_bind_by_name </ code> 将占位符绑定到PHP变量。</ p>

示例:< / p>

  $ variable = 42; 
$ stid = oci_parse($ conn,'SELECT col_name FROM tbl_name WHERE col_name&gt;:num;');
oci_bind_by_name($ stid,“ :num“,$ variable);
oci_execute($ stid);
</ code> </ pre>
</ div>

展开原文

原文

'SELECT emp from table emp=\'$sid\'' is a string that you pass exactly as it is to Oracle, this is why it doesn't work.

You need to use oci_bind_by_name to bind a placeholder to a PHP variable.

Example:

$variable = 42;
$stid = oci_parse($conn, 'SELECT col_name FROM tbl_name WHERE col_name > :num;');
oci_bind_by_name($stid, ":num", $variable);
oci_execute($stid);

dsutuyxe088689
dsutuyxe088689 嘿marco,谢谢你的工作。 万分感谢 !!! :)
4 年多之前 回复
立即提问
相关内容推荐