PHP SQL临时表将无法正常工作

时间:2013-11-07 13:28:52

标签: php mysql sql

我正在尝试了解临时表的工作原理。但即使我从我的教程中复制并粘贴它,我也没有得到预期的结果。

有关详细信息,请参阅下面的代码。 目前.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);
?>

2 个答案:

答案 0 :(得分:3)

您的sql创建中似乎有错误。你缺少一个右括号:“)”

CREATE TEMPORARY TABLE myCity (Name CHAR(30)

阿德里安。

答案 1 :(得分: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();

记住临时表只存在于会话中,有时我们需要创建常规表并稍后截断... 您必须考虑使用DB lib,如Doctrine DBAL或ADODb或类似的东西......