0

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();
    }
?>
8
  • 1
    Table 'databaseName.tableName' doesn't exist what's unclear? Commented Jan 27, 2017 at 8:44
  • It might be useful to see the code in dbconfig.php as well Commented Jan 27, 2017 at 8:44
  • NOTE: If you need a productID and a userID to make the delete unique then you probably also need the userID in the SELECT or you might get more than one row selected by the SELECT and be deleting randon rows Commented Jan 27, 2017 at 8:46
  • I'm assuming you can find tableName somewhere in your code, since it's the table missing in the error, and the code you're showing only refer tblcart. Maybe you should start with fixing that. Commented Jan 27, 2017 at 9:02
  • @fpietka the tableName is referring to tblcart. So the error note should be databaseName.tblcart but I do on purpose replacing the databaseName.tblcart as databaseName.tableName Commented Jan 27, 2017 at 9:16

1 Answer 1

3

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.

Sign up to request clarification or add additional context in comments.

1 Comment

I don't realize this until you mention it. Thank you very much!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.