Несколько подготовленных операторов в PHP с MySQLi - PullRequest
5 голосов
/ 10 марта 2012

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

По сути, я просто хочу вставить запись в одну таблицу, а затем вставить эту же запись в другую таблицу, используя MySQLi.

Спасибо!

Ответы [ 2 ]

8 голосов
/ 10 марта 2012

Прямо со страницы mysqli: http://php.net/manual/en/mysqli.commit.php

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* set autocommit to off */
$mysqli->autocommit(FALSE);

/* Insert some values */
$mysqli->query("INSERT INTO table1 VALUES ('DEU', 'Bavarian', 'F', 11.2)");
$mysqli->query("INSERT INTO table2 VALUES ('DEU', 'Bavarian', 'F', 11.2)");

/* commit transaction */
$mysqli->commit();

/* close connection */
$mysqli->close();

* Редактировать с подготовленными высказываниями для "ненормального" действия:

<?php
$mysqli = new mysqli("localhost", "root", "", "");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* set autocommit to off */
$mysqli->autocommit(FALSE);

$stmt1 = $mysqli->prepare("INSERT INTO tbl1 (id, intro) VALUES (?, ?)");
$stmt2 = $mysqli->prepare("INSERT INTO tbl2 (id, name) VALUES (?, ?)");

$str1 = 'abc';
$str2 = 'efg';
$str3 = 'hij';
$str4 = 'klm';

$stmt1->bind_param('ss', $str1, $str2);
$stmt2->bind_param('ss', $str3,$str4);

if ($stmt1->execute() == false)
{
    echo 'First query failed: ' . $mysqli->error;
}
$stmt1->close();
if ($stmt2->execute() == false)
{
    echo 'Second query failed: ' . $mysqli->error;
}
$stmt2->close();
$mysqli->close();
2 голосов
/ 10 марта 2012

должен ли я закрыть утверждение

номер

закрыть соединение с базой данных

Количество

поместите весь код в функцию

Желательно, если у вас есть представление о том, что такое функции и как их использовать.

Кстати, вставлять одни и те же данные дважды бессмысленно. Вы должны связать данные, а не удвоить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...