我正在尝试了解临时表的工作原理。但即使我从我的教程中复制并粘贴它,我也没有得到预期的结果。
有关详细信息,请参阅下面的代码。 目前.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);
?>
答案 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或类似的东西......