{"id":1043,"date":"2014-07-23T08:16:21","date_gmt":"2014-07-23T06:16:21","guid":{"rendered":"http:\/\/www.speich.net\/articles\/?p=1043"},"modified":"2019-11-16T18:06:29","modified_gmt":"2019-11-16T17:06:29","slug":"php-quick-tip-binding-variables-in-a-sql-where-in-clause","status":"publish","type":"post","link":"https:\/\/www.speich.net\/articles\/en\/2014\/07\/23\/php-quick-tip-binding-variables-in-a-sql-where-in-clause\/","title":{"rendered":"PHP Tip: Binding variables in a SQL WHERE IN clause"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Have you ever wondered if it is possible to bind an unknown amount of variables in a SQL WHERE IN clause, e.g.:<\/p>\n\n\n\n<pre><code class=\"language-sql\">SELECT id, text FROM myTable WHERE id IN (:myId1, :myId2, myId3, ...)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use a OCI collection object and wonder no more:<\/p>\n\n\n\n<pre><code class=\"language-php\">$keyList = array(100, 250, 350);\n$stmt = oci_parse($cnn, \"SELECT id, text FROM myTable WHERE id IN (SELECT column_value from table(:myIds))\");\n$coll = oci_new_collection($cnn, 'ODCIVARCHAR2LIST','SYS');\nforeach ($keyList as $key) {\n   $coll-&gt;append($key);\n}\noci_bind_by_name($stmt, ':myIds', $coll, -1, OCI_B_NTY);\noci_execute($stmt);\n\nwhile($row = oci_fetch_array($stmt, OCI_ASSOC)) {\n    echo \"{$row['ID']}, {$row['TEXT']}\";\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I found the above <a title=\"stackoverflow\" href=\"http:\/\/stackoverflow.com\/questions\/18086169\/oracle-how-to-efficiently-select-rows-using-a-key-list\/18091842#18091842\" target=\"_blank\" rel=\"noopener noreferrer\">solution by ThinkJet on stackoverflow<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Have you ever wondered if it is possible to bind an unknown amount of variables in a SQL WHERE IN clause, e.g.: SELECT id, text FROM myTable WHERE id IN (:myId1, :myId2, myId3, &#8230;) Use a OCI collection object and wonder no more: $keyList = array(100, 250, 350); $stmt = oci_parse($cnn, &#8220;SELECT id, text FROM &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.speich.net\/articles\/en\/2014\/07\/23\/php-quick-tip-binding-variables-in-a-sql-where-in-clause\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;PHP Tip: Binding variables in a SQL WHERE IN clause&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,281],"tags":[68,69,81],"class_list":["post-1043","post","type-post","status-publish","format-standard","hentry","category-php","category-sql","tag-oci","tag-oracle","tag-sql","entry"],"_links":{"self":[{"href":"https:\/\/www.speich.net\/articles\/wp-json\/wp\/v2\/posts\/1043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.speich.net\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.speich.net\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.speich.net\/articles\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.speich.net\/articles\/wp-json\/wp\/v2\/comments?post=1043"}],"version-history":[{"count":2,"href":"https:\/\/www.speich.net\/articles\/wp-json\/wp\/v2\/posts\/1043\/revisions"}],"predecessor-version":[{"id":1670,"href":"https:\/\/www.speich.net\/articles\/wp-json\/wp\/v2\/posts\/1043\/revisions\/1670"}],"wp:attachment":[{"href":"https:\/\/www.speich.net\/articles\/wp-json\/wp\/v2\/media?parent=1043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.speich.net\/articles\/wp-json\/wp\/v2\/categories?post=1043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.speich.net\/articles\/wp-json\/wp\/v2\/tags?post=1043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}