I have a table with two data cityname
and zipcode
.Now i want to find New_york and show the zipcode. I use this code but nothing shown
$sql = sprintf("SELECT * FROM myTable WHERE cityname LIKE new_york",
mysql_real_escape_string($prefix));
$query = mysql_query($sql);
What is the best and fast way to find something in mysql with php ?
Try this:
$sql = "SELECT * FROM myTable WHERE cityname LIKE '%New York%'";
$query = mysql_query($sql);
The word which will be searched should be in single quotes. Only the word will be a table field / column.
You should use PDO (More information about PDO) for this, not the old and deprecated mysql_* functions. See comments above from Mark Baker and Elias Van Ootegem.
//comment #1:
use var_dump($query);
for debugging. Successfully connect to the mysql-server? Use http://de2.php.net/manual/en/function.mysql-errno.php or http://de2.php.net/manual/en/function.mysql-error.php to get errors.
//comment #2:
what do you get with echo mysql_errno();
and echo mysql_error();
//comment #3:
It seems the user need a password or has no access or permissions to the selected database. Check your connection settings on mysql_connect($server, $username, $password)
or the permissions of the user with phpMyAdmin.
//comment #4:
//comment #5:
Which output you get with SHOW GRANTS FOR my@localhost
on phpmyadmin.
Try this
$sql = sprintf("SELECT * FROM myTable WHERE cityname LIKE '%s%%'",
mysql_real_escape_string($prefix));
$query = mysql_query($sql);
The sprintf is expecting a %s
to know where to replace with $prefix
but you also need to add a %
to the LIKE to generate LIKE 'New York%'
, because you are using sprintf it will fail if it see's only one %
at the end of that format ( as the %
is its control character) so you have to add 2 %%
so sprintf will assume this is a %
that you want in the output and not a incorrect formatting request. Its sprintf's way of escaping it's control character.
You can try this $sql = "SELECT * FROM myTable WHERE cityname LIKE '%New York%'"; $query = mysql_query($sql);