使用LIKE
和PHP变量时遇到问题。我想根据用户名选择与DB中的用户名匹配的内容。这是我的代码:
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "1234";
$dbname = "coffeecorner";
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
$user = $_SESSION['username'];
$sql = "select username ";
$sql .= "from add_reservation";
$sql .= "where username like" . $user;
$result = mysqli_query($connection, $sql);
if(!$result)
{
die("database query fail!" . mysqli_error($connection));
}
错误
数据库查询失败!您的SQL语法有错误;检查 手册,对应右边的MySQL服务器版本 在第1行'likeipin'附近使用的语法
任何帮助将不胜感激!
答案 0 :(得分:1)
您需要围绕用户名引用。此外,如果您使用LIKE
来匹配模式,则应该在其中包含通配符。
$sql .= "where username likem '%$user%'";
但最好使用参数化查询。
$sql = 'SELECT username
FROM add_reservation
WHERE username like ?';
$user_pattern = "%$user%";
$stmt = mysqli_prepare($connection, $sql);
mysqli_stmt_bind_param($stmt, "s", $user_pattern);
$result = mysqli_stmt_execute($stmt);
if (!$result) {
die("database query fail!" . mysqli_error($connection));
}
答案 1 :(得分:0)
你需要添加一些空格,如:
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "1234";
$dbname = "coffeecorner";
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
$user = $_SESSION['username'];
$sql = "select username ";
$sql .= "from add_reservation";
$sql .= "where username like " . $user;
$result = mysqli_query($connection, $sql);
if(!$result)
{
die("database query fail!" . mysqli_error($connection));
}
检查错误消息: 数据库查询失败!您的SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在' likeipin'附近使用。在第1行
单词like
卡在用户名上,形成一个字符串likeipin
;它应该是like ipin
,意思是$sql .= "where username like " . $user;
小心会话,在访问会话变量之前应该使用session_start。
您可以使用此查询字符串:$sql = "SELECT username FROM add_reservation
WHERE username LIKE '%". mysql_real_escape_string($user) ."%'"
或此查询字符串:
$sql = "SELECT username FROM add_reservation
WHERE username LIKE '%".$user."%'"
希望它有所帮助。
答案 2 :(得分:0)
if(session_id()=='' || isset($_SESSION['username'])){
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "1234";
$dbname = "coffeecorner";
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
$user = $_SESSION['username'];
$sql = "(SELECT * FROM add_reservation WHERE username like '$user')";
$result = mysqli_query($connection, $sql);
if(!$result)
{
die("database query fail!" . mysqli_error($connection) . mysqli_errno($connection));
}
希望它有所帮助!