PHP MySQL INSERT возвращает значение с одним выполнением запроса

Есть ли что-нибудь, возвращаемое из MySQL / PHP при выполнении запроса INSERT? Вот моя функция, которую я имею в классе.

function mysqlQuery($query) { // Gets the results from the query $results = mysql_query($query, $this->connection); // Loops through the queried results as an multi-dimensional array while($rows = mysql_fetch_array($results, MYSQL_ASSOC)) { // Push results to single array $rs[] = $rows; } // Return results as array return $rs; } 

Вот как я называю функцию

 $rs = $dbh->mysqlQuery($query); 

Но выполнение запроса INSERT $ rs ничего не возвращает. Мне нужна моя функция или это поведение по умолчанию? Любые советы также будут полезны.

DUH, спасибо, что напомнил мне, что он возвращает TRUE / FALSE. по какой-то причине у меня это было в голове, это фактически вернуло другое значение, но, посмотрев на мою функцию, я вижу, что я не проверяю условие TRUE / FALSE и перебираю только массив результатов.

Спасибо за все правильные ответы, но сначала, чтобы правильно ответить, получили очки, ура!

INSERT возвращает true или false. чтобы действительно вернуть что-то полезное, вам понадобится SELECT или подобный запрос. нет результата для получения с помощью INSERT.

Из документации php:

Возвращаемые значения Для SELECT , SHOW, DESCRIBE, EXPLAIN и других операторов, возвращающих mysql_query() , mysql_query() возвращает ресурс с успехом или FALSE при ошибке.

Для других типов операторов SQL INSERT , UPDATE , DELETE , DROP и т. Д. mysql_query() возвращает TRUE при успешном mysql_query() или FALSE при ошибке.

mysql_fetch_array() ресурс результата должен быть передан mysql_fetch_array() и другим функциям для обработки таблиц результатов для доступа к возвращенным данным.

Используйте mysql_num_rows() чтобы узнать, сколько строк было возвращено для SELECT statement или mysql_affected_rows() чтобы узнать, сколько строк было затронуто mysql_affected_rows() DELETE , INSERT , REPLACE или UPDATE statement.

mysql_query() также выйдет из строя и вернет FALSE если у пользователя нет разрешения на доступ к таблицам, на которые ссылается запрос.

От php.net http://us2.php.net/mysql_query

Для SELECT, SHOW, DESCRIBE, EXPLAIN и других операторов, возвращающих набор результатов, mysql_query () возвращает ресурс с успехом или FALSE при ошибке.

Для других типов операторов SQL INSERT, UPDATE, DELETE, DROP и т. Д. Mysql_query () возвращает TRUE при успешном завершении или FALSE при ошибке.

Как правило, когда разработчики создают домашние функции для манипулирования запросами, они используют два метода. Один, «запрос», используемый для SELECT и co, и один, «exec», другие INSERT, UPDATE и другие (например, в расширении PDO).

Если вы хотите сохранить свою функцию, добавьте оператор IF вокруг цикла, проверяя тип $ results (например, с is_resource ())

В приведенном ниже примере я добавляю к моему предложению «возвращение» вместе с первичным ключом моей таблицы, а затем после выполнения, я делаю выборку, получая массив со значением последнего вставленного id.

 <?php public function insert($employee){ $sqlQuery = "INSERT INTO employee(user_id,name,address,city) VALUES(:user_id,:name,:address,:city) RETURNING employee_id"; $statement = $this->prepare($sqlQuery); $a ="2002-03-11 12:01AM" ; $statement->bindParam(":user_id", $employee->getUserId(), PDO::PARAM_INT); $statement->bindParam(":name", $employee->getName(), PDO::PARAM_STR); $statement->bindParam(":address", $employee->getAddress(), PDO::PARAM_STR); $statement->bindParam(":city", $employee->getCity(), PDO::PARAM_STR); $statement->execute(); $result = $statement->fetch(PDO::FETCH_ASSOC); return $result["employee_id"]; } ?> 

Источник