Reputation: 2105
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.
Upvotes: 0
Views: 3791
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
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
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
Reputation: 4339
Try with removing quotes on sql statement:
$sql = "SELECT Name FROM sample_table LIMIT 0, 30";
Upvotes: 0
Reputation: 8461
try this
SELECT Name FROM sample_table LIMIT 0, 30
Instead of
SELECT Name FROM 'sample_table' LIMIT 0, 30
Upvotes: 1