Я хочу искать в базе данных, если таблица уже содержит данные, если нет, то вставьте их - PullRequest
1 голос
/ 22 марта 2011

Я использую подготовленные MySQLi операторы для этого, потому что данные поступают из других источников.Вот мой код, это не работает человек.Я не понимаю, почему мне нужно сделать $ stmt-> store_result (), чтобы запустить num_rows () .. Потому что, если я не запускаю store_result, я получу ошибку:

Неустранимая ошибка: вызов функции-члена bind_param () для необъекта

foreach($this->contents as $key => $dealer) {
        foreach($dealer as $deals) {
               $stmt = $mysqli->prepare("SELECT id, name FROM company WHERE name = ? LIMIT 1");
               $stmt->bind_param("s", $deals['company']);
               $stmt->execute();
               $stmt->store_result();

               if($stmt->num_rows() > 0) {
                     $companyid = // I don't know how to get the id from the query
               } else {
                     $stmt->prepare("INSERT INTO company (name) VALUES (?)");
                     $stmt->bind_param("s", $deals['company']);
                     $stmt->execute();
               }
               $stmt->close();
        }
}

В основном я хочу, чтобы код проверял, существует ли компания в таблице компании, а затем, проверив ее,если компания существует, тогда мне нужно записать идентификатор компании, чтобы я мог использовать его в других своих запросах, но если он не существует, тогда мне нужно записать название компании, затем получить идентификатор, чтобы я мог использовать его в своемдругие вопросы.

Пожалуйста, помогите мне.

1 Ответ

1 голос
/ 22 марта 2011

Чтобы получить $companyId, вам нужно сделать $stmt->bind_result() и $stmt->fetch(). Документы при получении ()

if($stmt->num_rows() > 0) {
  // To get your companyId
  $stmt->bind_result($companyId);
  $stmt->fetch()

  // Now $companyId has the value from id in the database
} else {
  // Do your insert statement, etc...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...