ChrisAdmin
ChrisAdmin

Reputation: 1002

difference between ' single quote and ` backtick for mysqli_query

This is bizarre, I'm changing some code from mysql to mysqli functions cause of php 5.5+, in these two basic examples, mysql_query had no ' single quote nor ` backtick and worked fine.

$sql = "SELECT * FROM `".$table."`"; // requires: ` ` or fails
$result = mysqli_query($con,$sql);

$sql = "SHOW TABLES LIKE '".$table."'"; // requires: ' ' or fails
$result = mysqli_query($con,$sql);

Can someone explain why?

EDIT: I guess the essence of my question is that: Both functions worked fine without any kind of quotes with mysql_query, and both failed mysqli_query without some kind of quotes. Meaning I will have to fiddle around with half my query's when changing from mysql_ to mysqli_

Upvotes: 1

Views: 400

Answers (1)

Kypros
Kypros

Reputation: 2986

In your first select statement you are trying to select a table by it's name, hence it will accept the name either with ` or without them, but now with single or double quotes. These should work :

 $sql = "SELECT * FROM `table_name`";
 $sql = "SELECT * FROM table_name";

In the second case you need to pass in a string to be compared by the like statement hence you need to surround it either with single ' or double " quotes:

$sql = "SHOW TABLES LIKE 'string'";
$sql = "SHOW TABLES LIKE \"string\"";

Edit:

Check out this previous answer on SO as well: Using backticks around field names

Edit 2:

Since we (me and in comments) suggested that backticks are somehow optional, keep in mind that as a best practise use them whenever you can since although it will allow you to pass most queries without them, some queries using MySql reserved words would break when containing mysql reserved words

Upvotes: 2

Related Questions