Navigatron
Navigatron

Reputation: 2105

SQL Syntax Error/Invalid Query - WAMP, phpMyAdmin

Im getting an error with my SQL queries in PHP. I have tried multiple queries, and have also tired using the PHP code that phpMyAdmin generates. Can anyone help me with this?

Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''sample_table' LIMIT 0, 30' at line 1

Here is the PHP code:

//Connect to server
 $connect = mysql_connect("localhost", "root", "");
if (!$connect) {
    die('Not connected : ' . mysql_error());
}

//Connect to DB
$db_selected = mysql_select_db("testing", $connect);
if (!$db_selected) {
    die ('Can\'t use foo : ' . mysql_error());
}

$sql = "SELECT `Name` FROM `sample_table` LIMIT 0, 30 ";

//Query DB table
$sqlQuery = mysql_query($sql, $connect);
if (!$sqlQuery) {
    die('Invalid query: ' . mysql_error());
}

//fetch the results / convert the results into an array
while($rows = mysql_fetch_array($sqlQuery, MYSQL_NUM)) //this is happening
{   
    $name = $rows['name'];
    $age = $rows['age'];
    $ID = $rows['ID'];

    echo "$name<br/>$age<br/>$ID<br/>";
}

mysql_close($connect);

Here is a screenshot of the phpMyAdmin table that I have created. There are a number records in this table.

phpMyAdmin Screenshot

Upvotes: 0

Views: 3791

Answers (5)

Emil Dumbazu
Emil Dumbazu

Reputation: 662

Change this:

$sql = "SELECT Name FROM 'sample_table' LIMIT 0, 30 ";

into this:

$sql = "SELECT `Name` FROM `sample_table` LIMIT 0, 30 ";

Notice that I've changed the ' into `.

By the way, the echo syntax should look like this:

 echo $name."<br/>".$age."<br/>".$ID."<br/>";

Upvotes: 1

Comatose
Comatose

Reputation: 11

backticks indicate a database, table, or column name. single quotes indicate to MySQL a field value. So it's trying to interpret 'sample_table' as a field value, not a table name, same with 'Name', change to `Name`.

Corrected script;

$connect = mysql_connect("localhost", "root", "");
if (!$connect) {
    die('Not connected : ' . mysql_error());
}

//Connect to DB
$db_selected = mysql_select_db("testing", $connect);
if (!$db_selected) {
    die ('Can\'t use foo : ' . mysql_error());
}

$sql = "SELECT `Name` FROM `sample_table` LIMIT 0, 30 ";

//Query DB table
$sqlQuery = mysql_query($sql, $connect);
if (!$sqlQuery) {
    die('Invalid query: ' . mysql_error());
}

//fetch the results / convert the results into an array
while($rows = mysql_fetch_array($sqlquery, MYSQL_NUM)) //this is happening
{   
    $name = $rows['name'];
    $age = $rows['age'];
    $ID = $rows['ID'];

    echo ($name."<br />".$age."<br />".$ID."<br />"); 
/*proper echo and html syntax, remember echo is still a function that you are passing a parameter to!*/
}

Upvotes: 1

Kamil Dziedzic
Kamil Dziedzic

Reputation: 5012

Instead of apostrophe:

 SELECT Name FROM 'sample_table' LIMIT 0, 30

use backtick:

 SELECT Name FROM `sample_table` LIMIT 0, 30

Upvotes: 1

Mirza Delic
Mirza Delic

Reputation: 4339

Try with removing quotes on sql statement:

$sql = "SELECT Name FROM sample_table LIMIT 0, 30";

Upvotes: 0

Moyed Ansari
Moyed Ansari

Reputation: 8461

try this

SELECT Name FROM sample_table LIMIT 0, 30 

Instead of

SELECT Name FROM 'sample_table' LIMIT 0, 30

Upvotes: 1

Related Questions