2017-09-27 45 views
0

我越来越空白obj尽管searchelement存在于database中,尽管搜索元素存在于数据库pdo中

这里就是我想要

$userInput = 'john'; 
    $db = getDB(); 
    $sql = "SELECT user_id, email, token FROM users WHERE name LIKE name=:input";   
    $stmt = $db->prepare($sql); 
    $stmt->bindParam("input", $userInput,PDO::PARAM_STR); 
    $stmt->execute(); 
    $usernameDetails = $stmt->fetch(PDO::FETCH_OBJ); 

    print_r($usernameDetails); 

我没有得到任何形式的error

请帮我在此先感谢!

+1

所以,你需要'LIKE'还是需要'='? –

+0

我决定我想'LIKE' – EaB

+0

然后删除'='。你知道正确的'LIKE'格式,不​​是吗? –

回答

1

你有错误的语法为LIKE运营商

name LIKE name=:input"; 

你需要改变这

$query = $db->prepare('SELECT user_id, email, token FROM users WHERE name LIKE :input'); 
$query->bindParam("input", "%$userInput%", PDO::PARAM_STR); 

注:%指任何字符。

+0

雅ravi我现在得到的结果,我试过@moulder的答案,但得到一些'错误' – EaB

+0

我有一个疑问做这个查询会获取多个结果?现在我得到单一结果。你能告诉我如何“获取”多个结果吗? – EaB

+0

@EaB你是什么意思的多重结果。这取决于数据,如果你有数据,那么你会得到他们在结果集 – Ravi

1

在查询中使用一个奇怪的做法:

WHERE name LIKE name=:input 

name像什么?

你要么使用

SELECT user_id, email, token FROM users WHERE name=:input 

SELECT user_id, email, token FROM users WHERE name LIKE :input 

LIKE我想你需要添加%情况下,否则LIKE成为=

// previous code here 
$stmt = $db->prepare($sql); 
$stmt->bindParam("input", '%' . $userInput . '%' ,PDO::PARAM_STR); 
// more code here