2014-12-23 104 views
-1

我在一個mysqli連接中執行兩個查詢,第一個工作正常,但第二個不是。在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 = 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(); 
?> 
+2

'$ rooms'是否評估爲可用的東西?嘗試一下,不要用引號。 – ethrbunny

+1

好吧,這並不意味着它沒有工作,只是它做的事情與你預期的不同。您需要檢查它創建的MYSQL錯誤。請參閱[將查詢錯誤轉換爲MySQLi中的異常](http://stackoverflow.com/q/14578243/367456)和[如何在PHP中獲取有用的錯誤消息?](http://stackoverflow.com/q/845021/367456) - 例如,您使用的標識符引號字符是錯誤的,請仔細檢查文檔:https://dev.mysql.com/doc/refman/5.0/en/identifiers.html – hakre

回答

2

你在你的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 
)"; 
+0

我複製並粘貼了您的代碼,而且它也不工作。 我懷疑CREATE TABLE是否以這種方式工作? – Yogie

+0

有你用任何其他詞取代'$房間',再次嘗試上面的表代碼 –

+0

更換房間與房間,工作正常! – Yogie