2017-10-13 2 views
1

이 사용 된 쿼리는 단 1 행/결과 내가 암호 열을 얻으려고 할 때 반환 내가 작성해야 할 . 하나 개의 행이 있어도MySQL 쿼리가 1 개의 결과를 반환하면 결과 [0]의 비밀번호를 지정하도록 지정해야합니까?</p> <pre><code>var hash = results[0].password; </code></pre> <p>내가</p> <pre><code>var hash = results.password; </code></pre> <p>을 시도하지만 해시가 정의된다 :

router.post('/', function(req, res, next) { 
    var username = req.body.username; 
    var password = req.body.password; 

    db.query('SELECT * FROM user WHERE username = ?', [username], function (error, results, fields) { 
    if (error) throw error; 
    var hash = results[0].password; 
    console.log(hash); 
    }); 

    res.redirect('/'); 

}); 
+0

응용 프로그램에 하나의 행만 있다는 것을 알지 못하기 때문에 추측합니다. 예. 결과에서 여전히 첫 번째 ([0]) 행을 가져야합니다. 모든 것을 반복하십시오. 당신은하지 않아도됩니다. 예를 들어 하나의 행 ".GetResultRow"를 가져 오는 메소드를 구현하지 않으면 단일 행을 돌려 줄 수 있습니다. – Paramone

답변

2

예, results 당신은 아직도 당신이 액세스하려고하는 행을 말할 필요가, 단순히 배열입니다. results에는 password 속성이 없지만 그 중 첫 번째 행은 속성입니다.

적어도 하나의 행이 있음을 보장하는 논리를 가지고 있다고 가정합니다. 그렇지 않은 경우 해당 결과가 없으면 (아마도 사용자가 존재하지 않는 경우) results[0]을 호출하면 오류가 발생합니다.

+0

PHP에서는 정확하지 않습니다. mysqli_fetch_assoc ($ result)로 행을 잡고 $ password = $ row [ 'password']로 패스워드를 얻을 수있다. – Bobimaru

+0

같은 개념이지만, 보통'for ($ row = mysqli ...)'를하고 있다면 이미 특정 행을 참조하고있는 것입니다. – kchason

관련 문제