Eaten Taik
Eaten Taik

Reputation: 938

Fatal error: Uncaught PDOException ("SQLSTATE[42S02]")

I am having below error when trying to delete an item.

Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'databaseName.tableName' doesn't exist in /storage/h1/735/500735/public_html/delete.php:21 Stack trace: #0 /storage/h1/735/500735/public_html/delete.php(21): PDOStatement->execute() #1 {main} thrown in /storage/h1/735/500735/public_html/delete.php on line 21

Note : tableName here is tblcart

File delete.php

<?php
    session_start();
    require("dbconfig.php");
    if (isset($_GET['delete_id'])) {
        $stmt_select = $DB_con->prepare('SELECT * FROM tblcart WHERE productID =:id');
        $stmt_select->execute(array(':id'=>$_GET['delete_id']));
        $result=$stmt_select->fetch(PDO::FETCH_ASSOC);

        $stmt_delete = $DB_con->prepare('DELETE FROM tblCart WHERE productID =:id AND userID =:userID');
        $stmt_delete->bindParam(':id', $_GET['delete_id']);
        $stmt_delete->bindParam(':userID', $_SESSION['userid']);
        $stmt_delete->execute();

        header("Location: cart.php");
    }
?>

Refer to the error note. The error occurred on line $stmt_delete->execute();. If I run the code through my local PC localhost, it is functioning well, but when running on a web hosting server I am getting this error.

File dbconfig.php

<?php
    $DB_HOST = 'localhost';
    $DB_USER = 'root';
    $DB_PASS = 'password';
    $DB_NAME = 'databaseName';

    try{
        $DB_con = new PDO("mysql:host={$DB_HOST};dbname={$DB_NAME}",$DB_USER,$DB_PASS);
        $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e){
        echo $e->getMessage();
    }
?>

Upvotes: 0

Views: 8704

Answers (1)

Antonios Tsimourtos
Antonios Tsimourtos

Reputation: 1672

Database and table names on Linux servers are case-sensitive.

Database and table names on Windows servers are not case-sensitive.

This is why it works on your computer (Windows) and not on the web hosting server (Linux)

Change the delete statement from:

$stmt_delete = $DB_con->prepare('DELETE FROM tblCart WHERE productID =:id AND userID =:userID');

To:

$stmt_delete = $DB_con->prepare('DELETE FROM tblcart WHERE productID =:id AND userID =:userID');

The difference is tblCart to tblcart.

A reference is here.

Upvotes: 3

Related Questions