【问题标题】:Two query in mysqli prepared? [closed]mysqli中的两个查询准备好了吗? [关闭]
【发布时间】: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();
?>

【问题讨论】:

标签: php mysqli prepared-statement create-table


【解决方案1】:

你的sql查询有错误,试试下面的代码

$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
)";

【讨论】:

  • 我复制并粘贴了您的代码,但它也不起作用。我怀疑 CREATE TABLE 是否以这种方式工作?
  • 让您将$room 替换为任何其他单词,再次尝试上面的表格代码
  • 用房间替换$room,效果很好!
  • 我找到了,它没有获取 $rooms 的值,我做了一个回显 $rooms,并且回显了 $rooms 的正确值,但是查询中的 $rooms 没有回显它的值。语法似乎有问题。
  • 语法和建表代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 2010-10-19
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多