0

编辑:下面的工作代码!

//* opens a connection to a MySQL server */
$mysqli = new mysqli($host, $username, $password, $database);

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


$query = "INSERT INTO `test` (test1, test2) VALUES('testing','testing2222');";
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444');";
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing5555','testing66666');";
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing77777','testing888888');";
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing99999','testing101010');";


if ($mysqli->multi_query($query)) {
    do {
        /* store first result set */
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                //printf("%s\n", $row[0]);
            }
            $result->free();
        }
     /* print divider */
    //if ($mysqli->more_results()) {
    //  printf("-----------------\n");
    //}
    } while ($mysqli->next_result());
}

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

下面的错误代码:

我已经尝试了所有可能的方法,但我似乎无法让它发挥作用。我注意到只有当我有一个 $query 要输入时,一种变体才会起作用。如果它不止一个,它就会失败。

//* opens a connection to a MySQL server */
$mysqli = mysql_connect($host,$username,$password, $database);



$query  = "INSERT INTO `test` (test1, test2) VALUES('testing','testing2222')";
$query  .= "INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444')";


if($mysqli->multi_query($query))
 { 
    do
    {

        if($result=$mysqli->store_result())
        {
            while($row=$result->fetch_row())
            {
                printf("%s<br/>",$row[0]);
            }
            $result->free();
        }

        if($mysqli->more_results())
        {
            print("-------------------------------<br/>");
        }
        else
        {
            echo '<br/>';
        }
    }while($mysqli->more_results() && $mysqli->next_result());
 }

它建立了联系,我只是修剪了一些代码以使其更容易理解。表存在,等等......也逐字逐句地尝试了主要示例,但它似乎不起作用。我哪里错了?

4

2 回答 2

1

你必须把;每个语句的末尾。还要经常检查错误$mysqli->error

现在您的查询将看起来像这样

INSERT INTO `test` (test1, test2) VALUES('testing','testing2222')INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444')

这是不正确的。

于 2013-10-15T15:28:34.813 回答
0

每个查询的末尾都需要一个分号。MySQL 正在等待语句的结束。请参阅 MySQL 文档中的以下内容:

不需要在一行中全部给出命令,因此需要多行的冗长命令不是问题。mysql 通过查找终止分号而不是查找输入行的结尾来确定语句的结束位置。(换句话说,mysql 接受自由格式的输入:它收集输入行但在看到分号之前不会执行它们。)

改变这个:

$query  = "INSERT INTO `test` (test1, test2) VALUES('testing','testing2222')";
$query  .= "INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444')";

对此:

$query  = "INSERT INTO `test` (test1, test2) VALUES('testing','testing2222');";
$query  .= "INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444');";
于 2013-10-15T15:50:05.123 回答