使用OCI8将数组作为值

时间:2015-06-04 12:24:15

标签: php database oracle

我用PHP和MySQL制作了一个预先版本的网站。现在,我需要在Oracle中更改我的数据库。我的问题是: 我们有这种类型的MySQL / PHP查询:

    $id = array("id" => $_GET['id']);
    $sql = 'SELECT * FROM article WHERE id = :id';
    $requete = $bdd->prepare($sql);
    $requete->execute($id);

    $compteur = $requete->rowCount($sql);

所以,我开始像这样更新我的PHP代码:

$sql = 'SELECT * FROM article WHERE id = :id';
$requete = oci_parse($identifiants, $sql);
oci_bind_array_by_name($requete, ':id', $id, 1);
oci_execute($requete);

$compteur = oci_num_rows($requete);

其中$ identifiants包含我的登录名,我的数据库的密码。现在,他拒绝执行查询,因为他不接受数组作为oci_bind_array行的参数; 那么如何在Oracle下更新PHP查询呢?

提前致谢

1 个答案:

答案 0 :(得分:0)

由于oci_bind_array_by_name适用于数组(在查询中表示存在类型数组的变量)与execute(array())不同,后者使用关联数组来设置值(在本例中为查询具有非数组输入。)

在这种情况下,请尝试oci_bind_by_name(假设您的连接正常):

$id = $_GET['id'];
$sql = 'SELECT * FROM article WHERE id = :id';
$requete = oci_parse($identifiants, $sql);
oci_bind_by_name($requete, ':id', $id);
oci_execute($requete);

$compteur = oci_num_rows($requete);
oci_free_statement($requete);