【发布时间】:2014-12-23 13:51:37
【问题描述】:
我在一个 mysqli 连接中执行两个查询,第一个工作正常,但第二个没有。
代码如下:
<?php
//from server
$con = mysqli_connect("localhost","user","pass","db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
<?php
//mysqli prepare
$stmt = $con->prepare("INSERT INTO users_rooms (ip, rooms, description, date_time)
VALUES (?,?,?, NOW())");
//bind params
$stmt->bind_param("sss", $ip, $rooms, $description);
$trunc_text = substr($_POST['channel_description'], 0, 250);
$rooms = preg_replace('/[^\w\d\s]+/', "", $_POST['channel_name']);
$temp_rooms = str_replace(' ', '_', $rooms);
$con->error;
if(($trunc_text < 251) && isset($rooms)){
//insert and execute msyqli
$ip = $_SERVER['REMOTE_ADDR'];
$rooms = mysqli_real_escape_string($con, htmlspecialchars(strip_tags($temp_rooms)));
$description = mysqli_real_escape_string($con, htmlspecialchars(strip_tags($trunc_text)));
$stmt->execute();
}
//mysql上面部分工作正常,按预期插入数据
//mysql的下面部分不工作,它没有创建一个表为$rooms
$rooms = mysqli_real_escape_string($con, htmlspecialchars(strip_tags($temp_rooms)));
$sql = "CREATE TABLE '$rooms' (
id BIGINT(255) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
ip VARCHAR(255) NOT NULL,
time VARCHAR(255) NOT NULL,
image_path VARCHAR(255),
smiley_path VARCHAR(255),
text_input VARCHAR(255),
current_date DATETIME
)";
$con->query($sql);
$con->error;
$stmt->close();
$con->close();
?>
【问题讨论】:
-
$rooms是否评估为可用的东西?也试试不带引号的。 -
好吧,这并不意味着它不起作用,只是它的作用与您的预期不同。您需要检查它创建的 MYSQL 错误。请参阅 Turning query errors to Exceptions in MySQLi 和 How to get useful error messages in PHP? - 例如,您使用的标识符引号字符是错误的,请仔细检查文档:dev.mysql.com/doc/refman/5.0/en/identifiers.html
标签: php mysqli prepared-statement create-table