2016-08-15 2 views
1

Я новичок в программировании и особенно с php и MySQL. Мне нужно создать динамический веб-сайт для домашней работы. Моя проблема связана с функцией ниже. Я хочу, чтобы он возвращал значение int по тегу с помощью указанного имени тега (string). Но в моем случае функция возвращает каждый раз «1». Может ли кто-нибудь помочь мне решить эту проблему, спасибо.Проблема с возвращаемым значением в php-функции

public function getTagIdByName(string $tagName) : int 
 
    { 
 
     $statement = self::$db->prepare("SELECT tags.id FROM tags WHERE tags.name = ? "); 
 
     $statement->bind_param("s", $tagName); 
 
     $result = $statement->execute(); 
 
     return $result; 
 
    }

+0

Используя подготовленные операторы 'mysqli', вам нужно будет« bind_result »перед переменной. См. Пример [здесь] (http://php.net/manual/en/mysqli-stmt.fetch.php). –

ответ

1

Проблема заключается в том, что вы возвращая результат execute(), но эта функция фактически не даст вам свой результат запроса. Вы должны получить результаты, убедившись, что выполнение выполнено успешно.

//don't forget to error-check before using query results 
$statement->execute() or die($statement->error); 
$result = $statement->get_result(); //retrieve results for processing 

if(!$result->num_rows) return null;//if the id was not found in the DB  
else return $result->fetch_assoc()['id']; 
+1

Он использует 'mysqli', а не' PDO'. – Barmar

+0

Сообщите мне, когда вы исправите свой ответ, и я удалю свой нижний план. – Barmar

+0

@Barmar Я внес изменения. Как вы узнали, что «mysqli» использовался OP? – BeetleJuice

1

Вы можете легко достичь с

$data = $result->fetch_assoc(); 
return $data['id']; // you can change with which you want to return with field name 

И в зависимости от того вы можете использовать возвращаемые значения.

Смежные вопросы