如何用php在mysql中搜索? [关闭]

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:

enter image description here

//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);