2016-06-01 21 views
0

SQLデータベースからユーザー名を取得しようとすると、現在問題が発生しています。致命的なエラー:キャッチされていないエラー:文字列のメンバー関数fetch_object()への呼び出し

Fatal error: Uncaught Error: Call to a member function fetch_object() on string in /Users/brianleaf/Google Drive/htdocs/login.php:34 Stack trace: #0 {main} thrown in /Users/brianleaf/Google Drive/htdocs/login.php on line 34 

私たちは、PHPに新しいので、任意の助けをいただければ幸いです。私たちは、これは我々がエラーを取得する実行すると、これが私たちのクエリのコードとfetch_object()

<?php 

$user = 'root'; 
$password = 'root'; 
$db = 'collabowrite'; 
$host = 'localhost'; 
$port = 3306; 
$conn = new mysqli($host, $user, $password, $db); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
// $link = mysqli_init(); 
// $success = mysqli_real_connect(
// $link, 
// $host, 
// $user, 
// $password, 
// $db, 
// $port 
//); 

//$sql='SELECT * FROM users WHERE username ='.$_GET['username']; 



$result = $conn->query('SELECT * FROM users WHERE username ="'.$_POST['username']).'"'; 
if(!$result){ 
    die($conn->error); 
} 
$userids = array(); 

while ($row = $result->fetch_object()){ 
    $userids[] = $row->id; 
} 


echo $userids[0]; 

$conn->close(); 

?> 

です。

+0

$ result = $ conn-> query( 'SELECT * FROM users WHERE username = "'。$ _ POST ['username'])。 '' ' '' 'が最後に連結されている理由は?そのエラーを打つ理由は自明です。' $ result'は文字列です – ShaneOH

+0

@ShaneOH私たちはそれを ""に入れないと –

+0

クエリのエラーをチェックする必要があります。クエリの終了を$ conn-> insideにする必要があります($ mysql-> error) die($ mysql-> error); ' – devpro

答えて

1

あなたの内側にあるのではなく、最後の)の行の外側に引用符があるようです。

てみてください、例えば:

$sql='SELECT * FROM users WHERE username ="'.$_POST['username'].'"'; 
$result = $conn->query($sql); 

または

$result = $conn->query('SELECT * FROM users WHERE username ="'.$_POST['username'].'"');

+0

助けてくれてありがとう! –

+1

音が良い..... ..... SQLインジェクション用に開かれている – devpro

1

あなたは、文字列を作成しました。これは、以下のようになります。

$result = $conn->query('SELECT * FROM users WHERE username="' . $_POST['username'] . '"'); 
関連する問題