与php变量一起使用

时间:2017-03-02 01:03:51

标签: php mysql

使用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));
}

enter image description here

错误

  

数据库查询失败!您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在第1行'likeipin'附近使用的语法

任何帮助将不胜感激!

3 个答案:

答案 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));
}

希望它有所帮助!