无法将字符串插入mysql查询

时间:2017-07-25 02:12:35

标签: php string-concatenation

我试图在PHP中创建一个登录页面,我试图在这里构建查询:

$q = 'SELECT * FROM users WHERE userid="'+$username+'"';

当我用

回声时
echo $q

我得到0.当我做

$q = 'SELECT * FROM users WHERE userid="'+"test"+'"';

我得到0.当我做

$q = 'SELECT * FROM users WHERE userid="michael"';

我得到了打印出的字符串的预期结果

3 个答案:

答案 0 :(得分:1)

使用.进行连接,也不要忘记清理数据以防止mysql注入。

$user_id = 'test';
$q = 'SELECT * FROM users WHERE userid="' . $user_id . '"';

答案 1 :(得分:0)

尝试使用PDO Prepared语句来保护自己免受SQL注入。

$q = 'SELECT * FROM users WHERE userid = ?';
$stmt = $dbh->prepare($q);
if ($stmt->execute(array($username))) {
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
}

http://php.net/manual/en/pdo.prepared-statements.php

答案 2 :(得分:0)

你可以用。

$user_id = 'michael';
$q = 'SELECT * FROM users WHERE userid="'.$user_id.'"';

或使用双引号表达式并使用单引号作为变量

$user_id = 'michael';
$q = "SELECT * FROM users WHERE userid='$user_id'";

我相信第二种选择是最小的,最容易记住