0

我试图了解临时表是如何工作的。但即使我从教程中复制并粘贴它,我也没有得到预期的结果。

有关更多信息,请参阅下面的代码。目前 .php 文件返回一个空白页(没有错误),而我希望它是:

已插入 1 行。

我查找了错误代码,但发现临时表没有错误代码。

有人知道我做错了什么吗?

<?php
    $link = mysqli_connect("localhost","xxx","xxx","xxx");

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

    mysqli_query($link, "CREATE TEMPORARY TABLE myCity (Name CHAR(30)");

    $city = "'s Hertogenbosch";
    $city = mysqli_real_escape_string($link, $city);

    /* this query with escaped $city will work */
    if (mysqli_query($link, "INSERT INTO myCity (Name) VALUES ('$city')")) 
    {
        printf("%d Row inserted.\n", mysqli_affected_rows($link));
    }

    mysqli_close($link);
?>
4

2 回答 2

3

看起来您在创建 sql 时出错。您缺少右括号:“)”

CREATE TEMPORARY TABLE myCity (Name CHAR(30)

阿德里安。

于 2013-11-07T13:41:46.520 回答
0

这对我有用

<?php
ini_set("display_errors",1);
error_reporting(E_ALL);

$mysqli = new mysqli("localhost", "root", "admin123", "test");

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
$mysqli->query("CREATE TEMPORARY TABLE CITIES (
  id int(11) NOT NULL,
  name varchar(64) NOT NULL
)");

//$mysqli->autocommit(FALSE);

$mysqli->query("INSERT INTO CITIES VALUES ('1', 'Bavaria')");
$mysqli->query("INSERT INTO CITIES VALUES ('2', 'Havana')");

//$mysqli->commit();

if ($result = $mysqli->query("SELECT * FROM CITIES LIMIT 10")) {
    printf("Select returned %d rows.\n", $result->num_rows);
    /* free result set */
    $result->close();
}

//$mysqli->query("DROP TABLE CITIES");

$mysqli->close();

记住临时表只存在于会话中,有时我们需要创建常规表并稍后截断......你一定会认为使用像 Doctrine DBAL 或 ADODb 之类的 DB lib 或类似的东西......

于 2013-11-07T14:06:27.370 回答