{"id":404,"date":"2021-01-30T22:00:00","date_gmt":"2021-01-30T22:00:00","guid":{"rendered":"https:\/\/rishikantsri.in\/blog\/?p=404"},"modified":"2023-10-12T06:51:28","modified_gmt":"2023-10-12T06:51:28","slug":"php-pdo-for-database-operations","status":"publish","type":"post","link":"https:\/\/rishikantsri.in\/blog\/php-pdo-for-database-operations\/","title":{"rendered":"PHP PDO for Database Operations"},"content":{"rendered":"\n<p>PHP Data Objects (PDO) is a robust and versatile database abstraction layer that provides a consistent and secure interface for interacting with various databases. It&#8217;s an essential tool for PHP developers when working with databases. In this comprehensive guide, we&#8217;ll cover the latest usage, syntax, error handling, and security considerations, as well as the pros and cons of using PHP PDO. Additionally, we&#8217;ll provide a complete example of creating, reading, updating, and deleting (CRUD) operations to help you get started with PDO.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">PDO Syntax<\/h2>\n\n\n\n<p>Let&#8217;s start by examining the core syntax of PHP PDO, which allows you to connect to databases and execute SQL queries. Below are the fundamental components of the PDO syntax.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Database Connection<\/h3>\n\n\n\n<p>To establish a connection to a database, you need to provide the Data Source Name (DSN), a username, and a password. Additionally, you can set options for error handling and other configurations.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:19.800000190734863px;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1f1f1f\"><span style=\"background:#a37ced;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1f1f1f\">PHP<\/span><\/span><span role=\"button\" tabindex=\"0\" data-code=\"$dsn = &quot;mysql:host=localhost;dbname=mydatabase&quot;;\n$username = &quot;username&quot;;\n$password = &quot;password&quot;;\n$options = [PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION];\n\ntry {\n    $pdo = new PDO($dsn, $username, $password, $options);\n} catch (PDOException $e) {\n    die(&quot;Database connection failed: &quot; . $e-&gt;getMessage());\n}\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">$dsn <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;mysql:host=localhost;dbname=mydatabase&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$username <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;username&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$password <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;password&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$options <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> [<\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">ATTR_ERRMODE <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">ERRMODE_EXCEPTION];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">try<\/span><span style=\"color: #B392F0\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $pdo <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #B392F0\">($dsn<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $username<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $password<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $options);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">} <\/span><span style=\"color: #F97583\">catch<\/span><span style=\"color: #B392F0\"> (<\/span><span style=\"color: #79B8FF\">PDOException<\/span><span style=\"color: #B392F0\"> $e) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;Database connection failed: &quot;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #B392F0\"> $e<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">getMessage<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">2. Executing a Query<\/h3>\n\n\n\n<p>After establishing a database connection, you can execute SQL queries. In the following example, we select all records from a &#8220;users&#8221; table and fetch the results as an associative array.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:9.899993896484375px;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1f1f1f\"><span style=\"background:#a37ced;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1f1f1f\">PHP<\/span><\/span><span role=\"button\" tabindex=\"0\" data-code=\"$sql = &quot;SELECT * FROM users&quot;;\n$stmt = $pdo-&gt;query($sql);\n$result = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">$sql <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;<\/span><span style=\"color: #F97583\">SELECT<\/span><span style=\"color: #FFAB70\"> <\/span><span style=\"color: #F97583\">*<\/span><span style=\"color: #FFAB70\"> <\/span><span style=\"color: #F97583\">FROM<\/span><span style=\"color: #FFAB70\"> users&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$stmt <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> $pdo<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">query<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$sql<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$result <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">fetchAll<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">FETCH_ASSOC<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">3. Prepared Statements<\/h3>\n\n\n\n<p>Prepared statements are a secure way to execute SQL queries and are particularly important for preventing SQL injection attacks. Here&#8217;s how you use prepared statements in PDO:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:9.899993896484375px;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1f1f1f\"><span style=\"background:#a37ced;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1f1f1f\">PHP<\/span><\/span><span role=\"button\" tabindex=\"0\" data-code=\"$sql = &quot;SELECT * FROM users WHERE username = :username&quot;;\n$stmt = $pdo-&gt;prepare($sql);\n$username = 'john_doe';\n$stmt-&gt;bindParam(':username', $username, PDO::PARAM_STR);\n$stmt-&gt;execute();\n$result = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">$sql <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;<\/span><span style=\"color: #F97583\">SELECT<\/span><span style=\"color: #FFAB70\"> <\/span><span style=\"color: #F97583\">*<\/span><span style=\"color: #FFAB70\"> <\/span><span style=\"color: #F97583\">FROM<\/span><span style=\"color: #FFAB70\"> users <\/span><span style=\"color: #F97583\">WHERE<\/span><span style=\"color: #FFAB70\"> username <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\"> :username&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$stmt <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> $pdo<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">prepare<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$sql<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$username <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&#39;john_doe&#39;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">bindParam<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #FFAB70\">&#39;:username&#39;<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $username<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">PARAM_STR<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">execute<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$result <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">fetchAll<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">FETCH_ASSOC<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Error Handling in PDO<\/h2>\n\n\n\n<p>PHP PDO offers robust error handling through exception handling. When an error occurs, a <code>PDOException<\/code> is thrown, which you can catch and handle according to your application&#8217;s requirements. Here&#8217;s an example of how to handle database connection errors:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:9.90000057220459px;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1f1f1f\"><span style=\"background:#a37ced;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1f1f1f\">PHP<\/span><\/span><span role=\"button\" tabindex=\"0\" data-code=\"try {\n    \/\/ Attempt to establish a database connection\n} catch (PDOException $e) {\n    die(&quot;Database connection failed: &quot; . $e-&gt;getMessage());\n}\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">try<\/span><span style=\"color: #B392F0\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #6B737C\">\/\/ Attempt to establish a database connection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">} <\/span><span style=\"color: #F97583\">catch<\/span><span style=\"color: #B392F0\"> (<\/span><span style=\"color: #79B8FF\">PDOException<\/span><span style=\"color: #B392F0\"> $e) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;Database connection failed: &quot;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #B392F0\"> $e<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">getMessage<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Exception handling allows you to gracefully manage errors by providing detailed information for debugging and troubleshooting.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Security Considerations<\/h2>\n\n\n\n<p>Ensuring the security of your application and database is of paramount importance. When using PDO, here are some security considerations to keep in mind:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Prepared Statements<\/h3>\n\n\n\n<p>Prepared statements are your primary defense against SQL injection attacks. They automatically escape and quote values, preventing the malicious injection of SQL code.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Parameter Binding<\/h3>\n\n\n\n<p>Always bind parameters in your prepared statements to prevent injection attacks. This ensures that user inputs are safely incorporated into your SQL queries.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Avoid Dynamic SQL<\/h3>\n\n\n\n<p>Avoid dynamically generating SQL queries with user inputs without thorough validation. Ensure that user inputs are validated and sanitized before using them in queries.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Secure Configuration<\/h3>\n\n\n\n<p>Your database server should be configured securely, including strong authentication mechanisms and access controls. Regularly update your database server software to patch known vulnerabilities.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pros and Cons of PHP PDO<\/h2>\n\n\n\n<p>Understanding the advantages and disadvantages of using PHP PDO is crucial when deciding whether to adopt it for your projects.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pros<\/h3>\n\n\n\n<ol>\n<li><strong>Database Independence<\/strong>: PDO allows you to switch between different databases easily by changing the DSN. This flexibility is valuable when working with multiple database systems.<\/li>\n\n\n\n<li><strong>Prepared Statements<\/strong>: Prepared statements provided by PDO offer strong protection against SQL injection attacks, enhancing the security of your application.<\/li>\n\n\n\n<li><strong>Error Handling<\/strong>: PDO&#8217;s exception-based error handling provides detailed information for debugging, making it easier to identify and address issues.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Cons<\/h3>\n\n\n\n<ol>\n<li><strong>Complexity<\/strong>: PDO may seem more complex for simple database tasks when compared to other, more straightforward database access methods.<\/li>\n\n\n\n<li><strong>Performance<\/strong>: In some cases, PDO may be slower than using native database extensions or libraries explicitly designed for a particular database system. However, the difference in performance is often negligible for most applications.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Complete Example: CRUD Operations with PHP PDO<\/h2>\n\n\n\n<p>Let&#8217;s explore a complete example of a PHP PDO-based CRUD system for user management. In a real-world application, you would typically have a table called &#8220;users&#8221; with columns like &#8220;id,&#8221; &#8220;username,&#8221; &#8220;password,&#8221; and &#8220;email.&#8221; Here&#8217;s a simplified example of CRUD operations:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create (Insert)<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:19.80000114440918px;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1f1f1f\"><span style=\"background:#a37ced;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1f1f1f\">PHP<\/span><\/span><span role=\"button\" tabindex=\"0\" data-code=\"&lt;?php\n\/\/ Database connection\n$dsn = &quot;mysql:host=localhost;dbname=your_database_name&quot;;\n$username = &quot;your_username&quot;;\n$password = &quot;your_password&quot;;\n$options = [PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION];\n\ntry {\n    $pdo = new PDO($dsn, $username, $password, $options);\n} catch (PDOException $e) {\n    die(&quot;Database connection failed: &quot; . $e-&gt;getMessage());\n}\n\nif ($_SERVER[&quot;REQUEST_METHOD&quot;] == &quot;POST&quot;) {\n    \/\/ Data validation (e.g., you should add more checks here)\n    $username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);\n    $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);\n    $password = $_POST['password'];\n\n    if (empty($username) || empty($email) || empty($password)) {\n        die(&quot;Please fill out all required fields.&quot;);\n    }\n\n    \/\/ Password hashing\n    $hashedPassword = password_hash($password, PASSWORD_BCRYPT);\n\n    \/\/ Insert data into the database using prepared statement\n    $sql = &quot;INSERT INTO users (username, email, password) VALUES (:username, :email, :password)&quot;;\n    $stmt = $pdo-&gt;prepare($sql);\n    $stmt-&gt;bindParam(':username', $username, PDO::PARAM_STR);\n    $stmt-&gt;bindParam(':email', $email, PDO::PARAM_STR);\n    $stmt-&gt;bindParam(':password', $hashedPassword, PDO::PARAM_STR);\n\n    try {\n        $stmt-&gt;execute();\n        echo &quot;User registration successful!&quot;;\n    } catch (PDOException $e) {\n        die(&quot;User registration failed: &quot; . $e-&gt;getMessage());\n    }\n}\n?&gt;\n\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;Register User&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Register User&lt;\/h1&gt;\n    &lt;form method=&quot;post&quot; action=&quot;&quot;&gt;\n        &lt;label for=&quot;username&quot;&gt;Username:&lt;\/label&gt;\n        &lt;input type=&quot;text&quot; id=&quot;username&quot; name=&quot;username&quot; required&gt;&lt;br&gt;\n        \n        &lt;label for=&quot;email&quot;&gt;Email:&lt;\/label&gt;\n        &lt;input type=&quot;email&quot; id=&quot;email&quot; name=&quot;email&quot; required&gt;&lt;br&gt;\n        \n        &lt;label for=&quot;password&quot;&gt;Password:&lt;\/label&gt;\n        &lt;input type=&quot;password&quot; id=&quot;password&quot; name=&quot;password&quot; required&gt;&lt;br&gt;\n        \n        &lt;input type=&quot;submit&quot; value=&quot;Register&quot;&gt;\n    &lt;\/form&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">&lt;?<\/span><span style=\"color: #B392F0\">php<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6B737C\">\/\/ Database connection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$dsn <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;mysql:host=localhost;dbname=your_database_name&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$username <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;your_username&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$password <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;your_password&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$options <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> [<\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">ATTR_ERRMODE <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">ERRMODE_EXCEPTION];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">try<\/span><span style=\"color: #B392F0\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $pdo <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #B392F0\">($dsn<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $username<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $password<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $options);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">} <\/span><span style=\"color: #F97583\">catch<\/span><span style=\"color: #B392F0\"> (<\/span><span style=\"color: #79B8FF\">PDOException<\/span><span style=\"color: #B392F0\"> $e) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;Database connection failed: &quot;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #B392F0\"> $e<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">getMessage<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">if<\/span><span style=\"color: #B392F0\"> ($_SERVER[<\/span><span style=\"color: #FFAB70\">&quot;REQUEST_METHOD&quot;<\/span><span style=\"color: #B392F0\">] <\/span><span style=\"color: #F97583\">==<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;POST&quot;<\/span><span style=\"color: #B392F0\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #6B737C\">\/\/ Data validation (e.g., you should add more checks here)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $username <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> filter_input<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #79B8FF\">INPUT_POST<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&#39;username&#39;<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">FILTER_SANITIZE_STRING<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $email <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> filter_input<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #79B8FF\">INPUT_POST<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&#39;email&#39;<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">FILTER_VALIDATE_EMAIL<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $password <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> $_POST[<\/span><span style=\"color: #FFAB70\">&#39;password&#39;<\/span><span style=\"color: #B392F0\">];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">if<\/span><span style=\"color: #B392F0\"> (empty<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$username<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">||<\/span><span style=\"color: #B392F0\"> empty<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$email<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">||<\/span><span style=\"color: #B392F0\"> empty<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$password<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;Please fill out all required fields.&quot;<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #6B737C\">\/\/ Password hashing<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $hashedPassword <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> password_hash<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$password<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> PASSWORD_BCRYPT<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #6B737C\">\/\/ Insert data into the database using prepared statement<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $sql <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;<\/span><span style=\"color: #F97583\">INSERT INTO<\/span><span style=\"color: #FFAB70\"> users (username, email, <\/span><span style=\"color: #F97583\">password<\/span><span style=\"color: #FFAB70\">) <\/span><span style=\"color: #F97583\">VALUES<\/span><span style=\"color: #FFAB70\"> (:username, :email, :<\/span><span style=\"color: #F97583\">password<\/span><span style=\"color: #FFAB70\">)&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $stmt <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> $pdo<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">prepare<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$sql<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">bindParam<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #FFAB70\">&#39;:username&#39;<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $username<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">PARAM_STR<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">bindParam<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #FFAB70\">&#39;:email&#39;<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $email<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">PARAM_STR<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">bindParam<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #FFAB70\">&#39;:password&#39;<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $hashedPassword<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">PARAM_STR<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">try<\/span><span style=\"color: #B392F0\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">execute<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        echo <\/span><span style=\"color: #FFAB70\">&quot;User registration successful!&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    } <\/span><span style=\"color: #F97583\">catch<\/span><span style=\"color: #B392F0\"> (<\/span><span style=\"color: #79B8FF\">PDOException<\/span><span style=\"color: #B392F0\"> $e) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;User registration failed: &quot;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #B392F0\"> $e<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">getMessage<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">?&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;!<\/span><span style=\"color: #B392F0\">DOCTYPE html<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">html<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">head<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">title<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">Register User<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">title<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">head<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">body<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">h1<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">Register User<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">h1<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">form method<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;post&quot;<\/span><span style=\"color: #B392F0\"> action<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;&quot;<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">label <\/span><span style=\"color: #F97583\">for=<\/span><span style=\"color: #FFAB70\">&quot;username&quot;<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">Username<\/span><span style=\"color: #F97583\">:&lt;\/<\/span><span style=\"color: #B392F0\">label<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">input type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;text&quot;<\/span><span style=\"color: #B392F0\"> id<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;username&quot;<\/span><span style=\"color: #B392F0\"> name<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;username&quot;<\/span><span style=\"color: #B392F0\"> required<\/span><span style=\"color: #F97583\">&gt;&lt;<\/span><span style=\"color: #79B8FF\">br<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">label <\/span><span style=\"color: #F97583\">for=<\/span><span style=\"color: #FFAB70\">&quot;email&quot;<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">Email<\/span><span style=\"color: #F97583\">:&lt;\/<\/span><span style=\"color: #B392F0\">label<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">input type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;email&quot;<\/span><span style=\"color: #B392F0\"> id<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;email&quot;<\/span><span style=\"color: #B392F0\"> name<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;email&quot;<\/span><span style=\"color: #B392F0\"> required<\/span><span style=\"color: #F97583\">&gt;&lt;<\/span><span style=\"color: #79B8FF\">br<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">label <\/span><span style=\"color: #F97583\">for=<\/span><span style=\"color: #FFAB70\">&quot;password&quot;<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">Password:<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">label<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">input type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;password&quot;<\/span><span style=\"color: #B392F0\"> id<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;password&quot;<\/span><span style=\"color: #B392F0\"> name<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;password&quot;<\/span><span style=\"color: #B392F0\"> required<\/span><span style=\"color: #F97583\">&gt;&lt;<\/span><span style=\"color: #79B8FF\">br<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">input type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;submit&quot;<\/span><span style=\"color: #B392F0\"> value<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;Register&quot;<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">form<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">body<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">html<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Read (Select)<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:19.80000114440918px;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1f1f1f\"><span style=\"background:#a37ced;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1f1f1f\">PHP<\/span><\/span><span role=\"button\" tabindex=\"0\" data-code=\"&lt;?php\n\/\/ Database connection\n$dsn = &quot;mysql:host=localhost;dbname=your_database_name&quot;;\n$username = &quot;your_username&quot;;\n$password = &quot;your_password&quot;;\n$options = [PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION];\n\ntry {\n    $pdo = new PDO($dsn, $username, $password, $options);\n} catch (PDOException $e) {\n    die(&quot;Database connection failed: &quot; . $e-&gt;getMessage());\n}\n\n\/\/ Select data from the database\n$sql = &quot;SELECT id, username, email FROM users&quot;;\n$stmt = $pdo-&gt;query($sql);\n\nif ($stmt) {\n    $users = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);\n} else {\n    die(&quot;Failed to retrieve user data.&quot;);\n}\n?&gt;\n\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;User List&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;User List&lt;\/h1&gt;\n    &lt;?php if (empty($users)) : ?&gt;\n        &lt;p&gt;No users found.&lt;\/p&gt;\n    &lt;?php else : ?&gt;\n        &lt;table&gt;\n            &lt;thead&gt;\n                &lt;tr&gt;\n                    &lt;th&gt;ID&lt;\/th&gt;\n                    &lt;th&gt;Username&lt;\/th&gt;\n                    &lt;th&gt;Email&lt;\/th&gt;\n                &lt;\/tr&gt;\n            &lt;\/thead&gt;\n            &lt;tbody&gt;\n                &lt;?php foreach ($users as $user) : ?&gt;\n                    &lt;tr&gt;\n                        &lt;td&gt;&lt;?php echo $user['id']; ?&gt;&lt;\/td&gt;\n                        &lt;td&gt;&lt;?php echo $user['username']; ?&gt;&lt;\/td&gt;\n                        &lt;td&gt;&lt;?php echo $user['email']; ?&gt;&lt;\/td&gt;\n                    &lt;\/tr&gt;\n                &lt;?php endforeach; ?&gt;\n            &lt;\/tbody&gt;\n        &lt;\/table&gt;\n    &lt;?php endif; ?&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">&lt;?<\/span><span style=\"color: #B392F0\">php<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6B737C\">\/\/ Database connection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$dsn <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;mysql:host=localhost;dbname=your_database_name&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$username <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;your_username&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$password <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;your_password&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$options <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> [<\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">ATTR_ERRMODE <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">ERRMODE_EXCEPTION];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">try<\/span><span style=\"color: #B392F0\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $pdo <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #B392F0\">($dsn<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $username<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $password<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $options);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">} <\/span><span style=\"color: #F97583\">catch<\/span><span style=\"color: #B392F0\"> (<\/span><span style=\"color: #79B8FF\">PDOException<\/span><span style=\"color: #B392F0\"> $e) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;Database connection failed: &quot;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #B392F0\"> $e<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">getMessage<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6B737C\">\/\/ Select data from the database<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$sql <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;<\/span><span style=\"color: #F97583\">SELECT<\/span><span style=\"color: #FFAB70\"> id, username, email <\/span><span style=\"color: #F97583\">FROM<\/span><span style=\"color: #FFAB70\"> users&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$stmt <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> $pdo<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">query<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$sql<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">if<\/span><span style=\"color: #B392F0\"> ($stmt) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $users <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">fetchAll<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">FETCH_ASSOC<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">} <\/span><span style=\"color: #F97583\">else<\/span><span style=\"color: #B392F0\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;Failed to retrieve user data.&quot;<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">?&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;!<\/span><span style=\"color: #B392F0\">DOCTYPE html<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">html<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">head<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">title<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">User List<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">title<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">head<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">body<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">h1<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">User List<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">h1<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;?<\/span><span style=\"color: #B392F0\">php <\/span><span style=\"color: #F97583\">if<\/span><span style=\"color: #B392F0\"> (empty<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$users<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">) <\/span><span style=\"color: #F97583\">:<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">?&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">p<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #79B8FF\">No<\/span><span style=\"color: #B392F0\"> users found<\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">p<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;?<\/span><span style=\"color: #B392F0\">php <\/span><span style=\"color: #F97583\">else<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">:<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">?&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">table<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">            <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">thead<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">                <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">tr<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">                    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">th<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">ID<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">th<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">                    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">th<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">Username<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">th<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">                    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">th<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">Email<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">th<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">                <\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">tr<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">            <\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">thead<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">            <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">tbody<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">                <\/span><span style=\"color: #F97583\">&lt;?<\/span><span style=\"color: #B392F0\">php <\/span><span style=\"color: #F97583\">foreach<\/span><span style=\"color: #B392F0\"> ($users <\/span><span style=\"color: #F97583\">as<\/span><span style=\"color: #B392F0\"> $user) <\/span><span style=\"color: #F97583\">:<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">?&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">                    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">tr<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">                        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">td<\/span><span style=\"color: #F97583\">&gt;&lt;?<\/span><span style=\"color: #B392F0\">php echo $user[<\/span><span style=\"color: #FFAB70\">&#39;id&#39;<\/span><span style=\"color: #B392F0\">]; <\/span><span style=\"color: #F97583\">?&gt;&lt;\/<\/span><span style=\"color: #B392F0\">td<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">                        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">td<\/span><span style=\"color: #F97583\">&gt;&lt;?<\/span><span style=\"color: #B392F0\">php echo $user[<\/span><span style=\"color: #FFAB70\">&#39;username&#39;<\/span><span style=\"color: #B392F0\">]; <\/span><span style=\"color: #F97583\">?&gt;&lt;\/<\/span><span style=\"color: #B392F0\">td<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">                        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">td<\/span><span style=\"color: #F97583\">&gt;&lt;?<\/span><span style=\"color: #B392F0\">php echo $user[<\/span><span style=\"color: #FFAB70\">&#39;email&#39;<\/span><span style=\"color: #B392F0\">]; <\/span><span style=\"color: #F97583\">?&gt;&lt;\/<\/span><span style=\"color: #B392F0\">td<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">                    <\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">tr<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">                <\/span><span style=\"color: #F97583\">&lt;?<\/span><span style=\"color: #B392F0\">php <\/span><span style=\"color: #F97583\">endforeach<\/span><span style=\"color: #B392F0\">; <\/span><span style=\"color: #F97583\">?&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">            <\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">tbody<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">table<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;?<\/span><span style=\"color: #B392F0\">php <\/span><span style=\"color: #F97583\">endif<\/span><span style=\"color: #B392F0\">; <\/span><span style=\"color: #F97583\">?&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">body<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">html<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Update (Update)<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:19.80000114440918px;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1f1f1f\"><span style=\"background:#a37ced;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1f1f1f\">PHP<\/span><\/span><span role=\"button\" tabindex=\"0\" data-code=\"&lt;?php\n\/\/ Database connection\n$dsn = &quot;mysql:host=localhost;dbname=your_database_name&quot;;\n$username = &quot;your_username&quot;;\n$password = &quot;your_password&quot;;\n$options = [PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION];\n\ntry {\n    $pdo = new PDO($dsn, $username, $password, $options);\n} catch (PDOException $e) {\n    die(&quot;Database connection failed: &quot; . $e-&gt;getMessage());\n}\n\nif ($_SERVER[&quot;REQUEST_METHOD&quot;] == &quot;POST&quot;) {\n    \/\/ Data validation (e.g., you should add more checks here)\n    $userId = $_POST['user_id'];\n    $newEmail = filter_input(INPUT_POST, 'new_email', FILTER_VALIDATE_EMAIL);\n\n    if (empty($newEmail)) {\n        die(&quot;Please provide a valid email address.&quot;);\n    }\n\n    \/\/ Update data in the database using a prepared statement\n    $sql = &quot;UPDATE users SET email = :new_email WHERE id = :user_id&quot;;\n    $stmt = $pdo-&gt;prepare($sql);\n    $stmt-&gt;bindParam(':new_email', $newEmail, PDO::PARAM_STR);\n    $stmt-&gt;bindParam(':user_id', $userId, PDO::PARAM_INT);\n\n    try {\n        $stmt-&gt;execute();\n        echo &quot;User data updated successfully!&quot;;\n    } catch (PDOException $e) {\n        die(&quot;User data update failed: &quot; . $e-&gt;getMessage());\n    }\n}\n?&gt;\n\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;Update User Data&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Update User Data&lt;\/h1&gt;\n    &lt;form method=&quot;post&quot; action=&quot;&quot;&gt;\n        &lt;label for=&quot;user_id&quot;&gt;User ID:&lt;\/label&gt;\n        &lt;input type=&quot;text&quot; id=&quot;user_id&quot; name=&quot;user_id&quot; required&gt;&lt;br&gt;\n        \n        &lt;label for=&quot;new_email&quot;&gt;New Email:&lt;\/label&gt;\n        &lt;input type=&quot;email&quot; id=&quot;new_email&quot; name=&quot;new_email&quot; required&gt;&lt;br&gt;\n        \n        &lt;input type=&quot;submit&quot; value=&quot;Update User Data&quot;&gt;\n    &lt;\/form&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">&lt;?<\/span><span style=\"color: #B392F0\">php<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6B737C\">\/\/ Database connection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$dsn <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;mysql:host=localhost;dbname=your_database_name&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$username <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;your_username&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$password <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;your_password&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$options <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> [<\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">ATTR_ERRMODE <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">ERRMODE_EXCEPTION];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">try<\/span><span style=\"color: #B392F0\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $pdo <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #B392F0\">($dsn<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $username<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $password<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $options);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">} <\/span><span style=\"color: #F97583\">catch<\/span><span style=\"color: #B392F0\"> (<\/span><span style=\"color: #79B8FF\">PDOException<\/span><span style=\"color: #B392F0\"> $e) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;Database connection failed: &quot;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #B392F0\"> $e<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">getMessage<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">if<\/span><span style=\"color: #B392F0\"> ($_SERVER[<\/span><span style=\"color: #FFAB70\">&quot;REQUEST_METHOD&quot;<\/span><span style=\"color: #B392F0\">] <\/span><span style=\"color: #F97583\">==<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;POST&quot;<\/span><span style=\"color: #B392F0\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #6B737C\">\/\/ Data validation (e.g., you should add more checks here)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $userId <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> $_POST[<\/span><span style=\"color: #FFAB70\">&#39;user_id&#39;<\/span><span style=\"color: #B392F0\">];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $newEmail <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> filter_input<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #79B8FF\">INPUT_POST<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&#39;new_email&#39;<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">FILTER_VALIDATE_EMAIL<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">if<\/span><span style=\"color: #B392F0\"> (empty<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$newEmail<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;Please provide a valid email address.&quot;<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #6B737C\">\/\/ Update data in the database using a prepared statement<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $sql <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;<\/span><span style=\"color: #F97583\">UPDATE<\/span><span style=\"color: #FFAB70\"> users <\/span><span style=\"color: #F97583\">SET<\/span><span style=\"color: #FFAB70\"> email <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\"> :new_email <\/span><span style=\"color: #F97583\">WHERE<\/span><span style=\"color: #FFAB70\"> id <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\"> :user_id&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $stmt <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> $pdo<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">prepare<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$sql<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">bindParam<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #FFAB70\">&#39;:new_email&#39;<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $newEmail<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">PARAM_STR<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">bindParam<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #FFAB70\">&#39;:user_id&#39;<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $userId<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">PARAM_INT<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">try<\/span><span style=\"color: #B392F0\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">execute<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        echo <\/span><span style=\"color: #FFAB70\">&quot;User data updated successfully!&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    } <\/span><span style=\"color: #F97583\">catch<\/span><span style=\"color: #B392F0\"> (<\/span><span style=\"color: #79B8FF\">PDOException<\/span><span style=\"color: #B392F0\"> $e) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;User data update failed: &quot;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #B392F0\"> $e<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">getMessage<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">?&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;!<\/span><span style=\"color: #B392F0\">DOCTYPE html<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">html<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">head<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">title<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">Update User Data<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">title<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">head<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">body<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">h1<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">Update User Data<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">h1<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">form method<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;post&quot;<\/span><span style=\"color: #B392F0\"> action<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;&quot;<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">label <\/span><span style=\"color: #F97583\">for=<\/span><span style=\"color: #FFAB70\">&quot;user_id&quot;<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">User ID<\/span><span style=\"color: #F97583\">:&lt;\/<\/span><span style=\"color: #B392F0\">label<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">input type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;text&quot;<\/span><span style=\"color: #B392F0\"> id<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;user_id&quot;<\/span><span style=\"color: #B392F0\"> name<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;user_id&quot;<\/span><span style=\"color: #B392F0\"> required<\/span><span style=\"color: #F97583\">&gt;&lt;<\/span><span style=\"color: #79B8FF\">br<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">label <\/span><span style=\"color: #F97583\">for=<\/span><span style=\"color: #FFAB70\">&quot;new_email&quot;<\/span><span style=\"color: #F97583\">&gt;New<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">Email<\/span><span style=\"color: #F97583\">:&lt;\/<\/span><span style=\"color: #B392F0\">label<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">input type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;email&quot;<\/span><span style=\"color: #B392F0\"> id<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;new_email&quot;<\/span><span style=\"color: #B392F0\"> name<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;new_email&quot;<\/span><span style=\"color: #B392F0\"> required<\/span><span style=\"color: #F97583\">&gt;&lt;<\/span><span style=\"color: #79B8FF\">br<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">input type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;submit&quot;<\/span><span style=\"color: #B392F0\"> value<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;Update User Data&quot;<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">form<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">body<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">html<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Delete (Delete)<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1.125rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:19.80000114440918px;line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1f1f1f\"><span style=\"background:#a37ced;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1f1f1f\">PHP<\/span><\/span><span role=\"button\" tabindex=\"0\" data-code=\"&lt;?php\n\/\/ Database connection\n$dsn = &quot;mysql:host=localhost;dbname=your_database_name&quot;;\n$username = &quot;your_username&quot;;\n$password = &quot;your_password&quot;;\n$options = [PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION];\n\ntry {\n    $pdo = new PDO($dsn, $username, $password, $options);\n} catch (PDOException $e) {\n    die(&quot;Database connection failed: &quot; . $e-&gt;getMessage());\n}\n\nif ($_SERVER[&quot;REQUEST_METHOD&quot;] == &quot;POST&quot;) {\n    \/\/ Data validation (e.g., you should add more checks here)\n    $userIdToDelete = $_POST['user_id'];\n\n    if (!is_numeric($userIdToDelete) || $userIdToDelete &lt;= 0) {\n        die(&quot;Invalid user ID provided.&quot;);\n    }\n\n    \/\/ Delete data from the database using a prepared statement\n    $sql = &quot;DELETE FROM users WHERE id = :user_id&quot;;\n    $stmt = $pdo-&gt;prepare($sql);\n    $stmt-&gt;bindParam(':user_id', $userIdToDelete, PDO::PARAM_INT);\n\n    try {\n        $stmt-&gt;execute();\n        echo &quot;User deleted successfully!&quot;;\n    } catch (PDOException $e) {\n        die(&quot;User deletion failed: &quot; . $e-&gt;getMessage());\n    }\n}\n?&gt;\n\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;Delete User&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Delete User&lt;\/h1&gt;\n    &lt;form method=&quot;post&quot; action=&quot;&quot;&gt;\n        &lt;label for=&quot;user_id&quot;&gt;User ID:&lt;\/label&gt;\n        &lt;input type=&quot;text&quot; id=&quot;user_id&quot; name=&quot;user_id&quot; required&gt;&lt;br&gt;\n        \n        &lt;input type=&quot;submit&quot; value=&quot;Delete User&quot;&gt;\n    &lt;\/form&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">&lt;?<\/span><span style=\"color: #B392F0\">php<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6B737C\">\/\/ Database connection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$dsn <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;mysql:host=localhost;dbname=your_database_name&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$username <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;your_username&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$password <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;your_password&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">$options <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> [<\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">ATTR_ERRMODE <\/span><span style=\"color: #F97583\">=&gt;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">ERRMODE_EXCEPTION];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">try<\/span><span style=\"color: #B392F0\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $pdo <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">new<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #B392F0\">($dsn<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $username<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $password<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $options);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">} <\/span><span style=\"color: #F97583\">catch<\/span><span style=\"color: #B392F0\"> (<\/span><span style=\"color: #79B8FF\">PDOException<\/span><span style=\"color: #B392F0\"> $e) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;Database connection failed: &quot;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #B392F0\"> $e<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">getMessage<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">if<\/span><span style=\"color: #B392F0\"> ($_SERVER[<\/span><span style=\"color: #FFAB70\">&quot;REQUEST_METHOD&quot;<\/span><span style=\"color: #B392F0\">] <\/span><span style=\"color: #F97583\">==<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;POST&quot;<\/span><span style=\"color: #B392F0\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #6B737C\">\/\/ Data validation (e.g., you should add more checks here)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $userIdToDelete <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> $_POST[<\/span><span style=\"color: #FFAB70\">&#39;user_id&#39;<\/span><span style=\"color: #B392F0\">];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">if<\/span><span style=\"color: #B392F0\"> (<\/span><span style=\"color: #F97583\">!<\/span><span style=\"color: #B392F0\">is_numeric<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$userIdToDelete<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">||<\/span><span style=\"color: #B392F0\"> $userIdToDelete <\/span><span style=\"color: #F97583\">&lt;=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F8F8F8\">0<\/span><span style=\"color: #B392F0\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;Invalid user ID provided.&quot;<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #6B737C\">\/\/ Delete data from the database using a prepared statement<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $sql <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #FFAB70\">&quot;<\/span><span style=\"color: #F97583\">DELETE<\/span><span style=\"color: #FFAB70\"> <\/span><span style=\"color: #F97583\">FROM<\/span><span style=\"color: #FFAB70\"> users <\/span><span style=\"color: #F97583\">WHERE<\/span><span style=\"color: #FFAB70\"> id <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\"> :user_id&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $stmt <\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #B392F0\"> $pdo<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">prepare<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #B392F0\">$sql<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">bindParam<\/span><span style=\"color: #BBBBBB\">(<\/span><span style=\"color: #FFAB70\">&#39;:user_id&#39;<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> $userIdToDelete<\/span><span style=\"color: #BBBBBB\">,<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #79B8FF\">PDO<\/span><span style=\"color: #F97583\">::<\/span><span style=\"color: #B392F0\">PARAM_INT<\/span><span style=\"color: #BBBBBB\">)<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">try<\/span><span style=\"color: #B392F0\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        $stmt<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">execute<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        echo <\/span><span style=\"color: #FFAB70\">&quot;User deleted successfully!&quot;<\/span><span style=\"color: #B392F0\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    } <\/span><span style=\"color: #F97583\">catch<\/span><span style=\"color: #B392F0\"> (<\/span><span style=\"color: #79B8FF\">PDOException<\/span><span style=\"color: #B392F0\"> $e) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">die<\/span><span style=\"color: #B392F0\">(<\/span><span style=\"color: #FFAB70\">&quot;User deletion failed: &quot;<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #F97583\">.<\/span><span style=\"color: #B392F0\"> $e<\/span><span style=\"color: #F97583\">-&gt;<\/span><span style=\"color: #B392F0\">getMessage<\/span><span style=\"color: #BBBBBB\">()<\/span><span style=\"color: #B392F0\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">?&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;!<\/span><span style=\"color: #B392F0\">DOCTYPE html<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">html<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">head<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">title<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">Delete User<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">title<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">head<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">body<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">h1<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">Delete User<\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">h1<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">form method<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;post&quot;<\/span><span style=\"color: #B392F0\"> action<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;&quot;<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">label <\/span><span style=\"color: #F97583\">for=<\/span><span style=\"color: #FFAB70\">&quot;user_id&quot;<\/span><span style=\"color: #F97583\">&gt;<\/span><span style=\"color: #B392F0\">User ID<\/span><span style=\"color: #F97583\">:&lt;\/<\/span><span style=\"color: #B392F0\">label<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">input type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;text&quot;<\/span><span style=\"color: #B392F0\"> id<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;user_id&quot;<\/span><span style=\"color: #B392F0\"> name<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;user_id&quot;<\/span><span style=\"color: #B392F0\"> required<\/span><span style=\"color: #F97583\">&gt;&lt;<\/span><span style=\"color: #79B8FF\">br<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">        <\/span><span style=\"color: #F97583\">&lt;<\/span><span style=\"color: #B392F0\">input type<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;submit&quot;<\/span><span style=\"color: #B392F0\"> value<\/span><span style=\"color: #F97583\">=<\/span><span style=\"color: #FFAB70\">&quot;Delete User&quot;<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">    <\/span><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">form<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">body<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">&lt;\/<\/span><span style=\"color: #B392F0\">html<\/span><span style=\"color: #F97583\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Keep in mind that this is a basic example for illustration purposes and doesn&#8217;t include input validation or thorough error handling. In a production environment, you should implement these to enhance security and data integrity.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>PHP PDO is a powerful tool for interacting with databases in a secure and consistent manner. It offers features like prepared statements, robust error handling, and support for various database systems. By following best practices for security and error handling, you can build secure and efficient database-driven applications using PHP PDO. Stay updated with the latest version of PDO and apply these techniques to ensure the reliability and security of your database interactions.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PHP Data Objects (PDO) is a robust and versatile database abstraction layer that provides a consistent and secure interface for interacting with various databases. It&#8217;s an essential tool for PHP developers when working with databases. In this comprehensive guide, we&#8217;ll cover the latest usage, syntax, error handling, and security considerations, as well as the pros [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48,10],"tags":[49,4],"_links":{"self":[{"href":"https:\/\/rishikantsri.in\/blog\/wp-json\/wp\/v2\/posts\/404"}],"collection":[{"href":"https:\/\/rishikantsri.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rishikantsri.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rishikantsri.in\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rishikantsri.in\/blog\/wp-json\/wp\/v2\/comments?post=404"}],"version-history":[{"count":2,"href":"https:\/\/rishikantsri.in\/blog\/wp-json\/wp\/v2\/posts\/404\/revisions"}],"predecessor-version":[{"id":407,"href":"https:\/\/rishikantsri.in\/blog\/wp-json\/wp\/v2\/posts\/404\/revisions\/407"}],"wp:attachment":[{"href":"https:\/\/rishikantsri.in\/blog\/wp-json\/wp\/v2\/media?parent=404"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rishikantsri.in\/blog\/wp-json\/wp\/v2\/categories?post=404"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rishikantsri.in\/blog\/wp-json\/wp\/v2\/tags?post=404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}