2016-06-01 3 views
0

В настоящее время мы сталкиваемся с проблемой при попытке получить имя пользователя из базы данных SQL. Это наш код запроса и fetch_object()Неустранимая ошибка: Непринятая ошибка: вызов функции-члена 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(); 

?> 

При запуске этого мы получаем ошибку:

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, так что любая помощь будет оценена.

+0

'$ результат = $ conn-> запрос ('SELECT * FROM пользователей, где имя пользователя =;' Любой "' $ _ POST [ 'имя пользователя'].). '"' причина, почему '' 'конкатенируется до конца? Причина, по которой вы делаете ошибку, не требует пояснений:' $ result' - это строка – ShaneOH

+0

@ShaneOH. Если мы не помещаем ее в "", она думает, что это столбец, а не значение. –

+0

U необходимо проверить ошибку для вашего запроса 'if (! $ result) die ($ mysql-> ошибка);' – devpro

ответ

1

Похоже, у вас есть цитата на внешней стороне последнего ) на линии 34, а не на внутренней стороне.

Try, например:

$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'] . '"');