{"id":21,"date":"2023-11-10T20:43:26","date_gmt":"2023-11-10T20:43:26","guid":{"rendered":"http:\/\/superwebtasarim.com\/bilgibankasi\/?p=21"},"modified":"2023-11-20T16:01:26","modified_gmt":"2023-11-20T16:01:26","slug":"pdo-islemleri-pdo-queries","status":"publish","type":"post","link":"https:\/\/superwebtasarim.com\/bilgibankasi\/php\/pdo-islemleri-pdo-queries\/","title":{"rendered":"PDO \u0130\u015flemleri &#8211; PDO Queries"},"content":{"rendered":"\n<p>PDO, PHP&#8217;de veritaban\u0131na ba\u011flanmak ve i\u015flemleri ger\u00e7ekle\u015ftirmek i\u00e7in bir s\u0131n\u0131ft\u0131r. PDO, veritaban\u0131 sistemleri aras\u0131nda standart bir API sa\u011flar, bu nedenle birden fazla veritaban\u0131 sistemini destekler.<\/p>\n\n\n\n<p>PDO&#8217;yu kullanmak i\u00e7in ilk olarak PDO s\u0131n\u0131f\u0131n\u0131 dahil edin ve ba\u011flant\u0131y\u0131 olu\u015fturun. Ba\u011flant\u0131y\u0131 olu\u015ftururken, veritaban\u0131 sistemini (\u00f6rne\u011fin, MySQL, PostgreSQL, SQLite), sunucu adresini, kullan\u0131c\u0131 ad\u0131n\u0131, parolan\u0131z\u0131 ve ba\u011flant\u0131y\u0131 kaydedece\u011finiz bir de\u011fi\u015fkene atay\u0131n.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>try {\n    $dsn = \"mysql:host=localhost;dbname=mydb\";\n    $username = \"root\";\n    $password = \"password\";\n    $options = &#91;\n        PDO::ATTR_ERRMODE            =&gt; PDO::ERRMODE_EXCEPTION,\n        PDO::ATTR_DEFAULT_FETCH_MODE =&gt; PDO::FETCH_ASSOC,\n        PDO::ATTR_EMULATE_PREPARES   =&gt; false,\n    ];\n    $pdo = new PDO($dsn, $username, $password, $options);\n} catch (PDOException $e) {\n    die(\"Error connecting to database: \" . $e-&gt;getMessage());\n}<\/code><\/pre>\n\n\n\n<p>Ard\u0131ndan, PDO&#8217;yu kullanarak sorgular\u0131 ve i\u015flemleri ger\u00e7ekle\u015ftirebilirsiniz. PDO, prepared statements (i\u015flevsel ifadeler) kullanarak veritaban\u0131nda SQL injecion gibi g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 \u00f6nler.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt = $pdo-&gt;prepare(\"SELECT name, email FROM users WHERE id = ?\");\n$stmt-&gt;execute(&#91;1]);\n$user = $stmt-&gt;fetch();\n\n$stmt = $pdo-&gt;prepare(\"UPDATE users SET name = ? WHERE id = ?\");\n$stmt-&gt;execute(&#91;\"John Doe\", 1]);\n\n$stmt = $pdo-&gt;prepare(\"DELETE FROM users WHERE id = ?\");\n$stmt-&gt;execute(&#91;1]);<\/code><\/pre>\n\n\n\n<p>PDO, veritaban\u0131nda ger\u00e7ekle\u015ftirilen i\u015flemleri g\u00f6zlemleyebilir ve raporlamak i\u00e7in kullan\u0131labilir.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt = $pdo-&gt;query(\"SELECT * FROM users\");\n$affectedRows = $stmt-&gt;rowCount();\n$lastInsertId = $pdo-&gt;lastInsertId();<\/code><\/pre>\n\n\n\n<p>PDO, veritaban\u0131ndaki tablolar\u0131 ve kolonlar\u0131 listeleyebilir ve sorgular\u0131 olu\u015fturabilirsiniz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$results = $pdo-&gt;query(\"SHOW TABLES\");\n$tables = &#91;];\nwhile ($row = $results-&gt;fetch()) {\n    $tables&#91;] = $row&#91;0];\n}\n\n$results = $pdo-&gt;query(\"SHOW COLUMNS FROM users\");\n$columns = &#91;];\nwhile ($row = $results-&gt;fetch()) {\n    $columns&#91;] = $row&#91;0];\n}<\/code><\/pre>\n\n\n\n<p>PDO, veritaban\u0131ndaki sorgular\u0131 ve i\u015flemleri ger\u00e7ekle\u015ftirmek i\u00e7in kullan\u0131labilir. PDO, veritaban\u0131 sistemleri aras\u0131nda standart bir API sa\u011flar, bu nedenle birden fazla veritaban\u0131 sistemini destekler.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<ol start=\"8\">\n<li><strong>Parametre ba\u011flama:<\/strong><br><br> PDO ile parametrelere de\u011fer atamak i\u00e7in farkl\u0131 y\u00f6ntemler kullanabilirsiniz. Yukar\u0131daki \u00f6rneklerde g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi diziler veya isimlendirilmi\u015f parametreler kullanabilirsiniz. \u0130simlendirilmi\u015f parametrelerle \u015funu yapabilirsiniz:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt = $pdo-&gt;prepare(\"SELECT name, email FROM users WHERE id = :id\");\n$stmt-&gt;bindParam(':id', $id, PDO::PARAM_INT);\n$id = 1;\n$stmt-&gt;execute();\n$user = $stmt-&gt;fetch();<\/code><\/pre>\n\n\n\n<ol start=\"9\">\n<li><strong>Son hata bilgilerini alma:<\/strong><br>Hatalar\u0131 yakalamak ve hata ayr\u0131nt\u0131lar\u0131n\u0131 almak i\u00e7in try-catch bloklar\u0131 kullanabilirsiniz. Hata ayr\u0131nt\u0131lar\u0131n\u0131 almak i\u00e7in <code>getMessage()<\/code> i\u015flevini kullanabilirsiniz. A\u015fa\u011f\u0131daki \u00f6rnekte, ba\u011flant\u0131 hatas\u0131 durumunda bir hata mesaj\u0131 yazd\u0131r\u0131l\u0131yor:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>try {\n    $pdo = new PDO($dsn, $username, $password);\n} catch (PDOException $e) {\n    die(\"Connection failed: \" . $e-&gt;getMessage());\n}<\/code><\/pre>\n\n\n\n<ol start=\"10\">\n<li>Sorgu sonu\u00e7lar\u0131n\u0131 d\u00f6ng\u00fc i\u00e7inde dola\u015fmak: PDO ile sorgu sonu\u00e7lar\u0131n\u0131 elde etmek i\u00e7in d\u00f6ng\u00fcler kullanabilirsiniz. birden fazla sat\u0131r\u0131 d\u00f6nd\u00fcren sorgular i\u00e7in <code>fetch()<\/code> i\u015flevi kullan\u0131larak d\u00f6ng\u00fc i\u00e7inde sonu\u00e7lar al\u0131nabilir:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt = $pdo-&gt;query(\"SELECT name, email FROM users\");\nwhile ($row = $stmt-&gt;fetch()) {\n    echo $row&#91;'name'] . \" - \" . $row&#91;'email'] . \"&lt;br&gt;\";\n}<\/code><\/pre>\n\n\n\n<ol start=\"11\">\n<li>Son eklenen veya g\u00fcncellenen sat\u0131r\u0131n ID&#8217;sini alma: PDO ile son eklenen veya g\u00fcncellenen sat\u0131r\u0131n ID&#8217;sini almak i\u00e7in <code>lastInsertId()<\/code> y\u00f6ntemini kullanabilirsiniz. \u00d6rnek olarak:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt = $pdo-&gt;prepare(\"INSERT INTO users (name, email) VALUES (?, ?)\");\n$stmt-&gt;execute(&#91;\"John Doe\", \"johndoe@example.com\"]);\n$lastId = $pdo-&gt;lastInsertId();<\/code><\/pre>\n\n\n\n<p>Bu noktada PHP PDO i\u015flemlerinin \u00e7e\u015fitli y\u00f6nlerini ayr\u0131nt\u0131l\u0131 bir \u015fekilde ele ald\u0131k. PDO, geni\u015f bir i\u015flevselli\u011fe sahip olup farkl\u0131 veritaban\u0131 sistemleriyle kullan\u0131labilir. Bu sayede veritaban\u0131 i\u015flemlerini g\u00fcvenli ve verimli bir \u015fekilde ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n\n\n\n<ol start=\"12\">\n<li>Veri \u00e7ekmede farkl\u0131 y\u00f6ntemler kullanma: PDO ile veri \u00e7ekerken farkl\u0131 y\u00f6ntemlerden birini se\u00e7ebilirsiniz. A\u015fa\u011f\u0131daki \u00f6rnekte FETCH_ASSOC se\u00e7ene\u011fi kullanarak sadece ili\u015fkisel bir dizi d\u00f6nd\u00fcr\u00fclmesini sa\u011fl\u0131yoruz:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt = $pdo-&gt;prepare(\"SELECT name, email FROM users\");\n$stmt-&gt;execute();\n$users = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);<\/code><\/pre>\n\n\n\n<ol start=\"13\">\n<li>PDO Hatalar\u0131n\u0131 Y\u00f6netme: PDO&#8217;da hatalar\u0131 y\u00f6netmek i\u00e7in <code>errorInfo()<\/code> y\u00f6ntemini kullanabilirsiniz. Bu y\u00f6ntem, sorgudaki hata hakk\u0131nda ayr\u0131nt\u0131l\u0131 bilgiler i\u00e7eren bir diziyi d\u00f6nd\u00fcr\u00fcr. \u00d6rne\u011fin:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt = $pdo-&gt;prepare(\"SELECT name FROM non_existing_table\");\n$stmt-&gt;execute();\n\n$errorInfo = $stmt-&gt;errorInfo();\nif ($errorInfo&#91;0] !== '00000') {\n    echo \"Query failed: \" . $errorInfo&#91;2];\n}<\/code><\/pre>\n\n\n\n<ol start=\"14\">\n<li>Veri tipini belirleme: PDO, kolonlar\u0131n veya parametrelerin veri tiplerini belirlemenize olanak sa\u011flar. Bu, veri uyumlulu\u011funu ve g\u00fcvenli\u011fi art\u0131r\u0131r. \u00d6rne\u011fin:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt = $pdo-&gt;prepare(\"INSERT INTO users (name, age) VALUES (?, ?)\");\n$stmt-&gt;bindValue(1, \"John Doe\", PDO::PARAM_STR);\n$stmt-&gt;bindValue(2, 25, PDO::PARAM_INT);\n$stmt-&gt;execute();<\/code><\/pre>\n\n\n\n<ol start=\"15\">\n<li>Ba\u011flant\u0131 parametrelerini de\u011fi\u015ftirme: PDO ba\u011flant\u0131 parametrelerini de\u011fi\u015ftirmek i\u00e7in <code>setAttribute()<\/code> y\u00f6ntemini kullanabilirsiniz. \u00d6rne\u011fin, hata raporlama seviyesini ve karakter setini de\u011fi\u015ftirmek i\u00e7in:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>$pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n$pdo-&gt;setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);\n$pdo-&gt;setAttribute(PDO::ATTR_EMULATE_PREPARES, false);\n$pdo-&gt;exec(\"SET NAMES 'utf8'\");<\/code><\/pre>\n\n\n\n<p>Bu noktada PDO kullanarak veritaban\u0131 i\u015flemlerini ger\u00e7ekle\u015ftirmek i\u00e7in \u00e7e\u015fitli y\u00f6ntemleri ele ald\u0131k. PDO, bir\u00e7ok i\u015flevselli\u011fi desteklemekte ve g\u00fcvenli, esnek bir \u015fekilde veritaban\u0131 i\u015flemleri yapman\u0131z\u0131 sa\u011flamaktad\u0131r. Bu y\u00f6ntemleri kullanarak veritaban\u0131 i\u015flemlerini daha kolay, daha g\u00fcvenli ve daha etkili bir \u015fekilde ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PDO, PHP&#8217;de veritaban\u0131na ba\u011flanmak ve i\u015flemleri ger\u00e7ekle\u015ftirmek i\u00e7in bir s\u0131n\u0131ft\u0131r. PDO, veritaban\u0131 sistemleri aras\u0131nda standart bir API sa\u011flar, bu nedenle birden fazla veritaban\u0131 sistemini destekler. PDO&#8217;yu kullanmak i\u00e7in ilk olarak PDO s\u0131n\u0131f\u0131n\u0131 dahil edin ve ba\u011flant\u0131y\u0131 olu\u015fturun. Ba\u011flant\u0131y\u0131 olu\u015ftururken, veritaban\u0131 sistemini (\u00f6rne\u011fin, MySQL, PostgreSQL, SQLite), sunucu adresini, kullan\u0131c\u0131 ad\u0131n\u0131, parolan\u0131z\u0131 ve ba\u011flant\u0131y\u0131 kaydedece\u011finiz bir de\u011fi\u015fkene [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7,4],"tags":[],"_links":{"self":[{"href":"https:\/\/superwebtasarim.com\/bilgibankasi\/wp-json\/wp\/v2\/posts\/21"}],"collection":[{"href":"https:\/\/superwebtasarim.com\/bilgibankasi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/superwebtasarim.com\/bilgibankasi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/superwebtasarim.com\/bilgibankasi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/superwebtasarim.com\/bilgibankasi\/wp-json\/wp\/v2\/comments?post=21"}],"version-history":[{"count":7,"href":"https:\/\/superwebtasarim.com\/bilgibankasi\/wp-json\/wp\/v2\/posts\/21\/revisions"}],"predecessor-version":[{"id":48,"href":"https:\/\/superwebtasarim.com\/bilgibankasi\/wp-json\/wp\/v2\/posts\/21\/revisions\/48"}],"wp:attachment":[{"href":"https:\/\/superwebtasarim.com\/bilgibankasi\/wp-json\/wp\/v2\/media?parent=21"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/superwebtasarim.com\/bilgibankasi\/wp-json\/wp\/v2\/categories?post=21"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/superwebtasarim.com\/bilgibankasi\/wp-json\/wp\/v2\/tags?post=21"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}