2016-03-01 58 views
-1

有人可以幫我使用該代碼,任何方向歡迎 我希望每個通過會話的用戶創建表(每個用戶創建自己的表 - 他人不能看到它)。用戶存儲自己的數據。 Mysql表名取自會話變量

<?php 
session_start(); 
if($_SESSION['user']==''){ 
header("Location:login.php"); 
}else{ 
$dbh=new PDO('mysql:dbname=something;host=127.0.0.1', 'something', 'something'); 
$sql=$dbh->prepare("SELECT * FROM users WHERE id=?"); 
$sql->execute(array($_SESSION['user'])); 
while($r=$sql->fetch()){ 
    $sql = "CREATE TABLE .'$r['username'].'" (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    firstname VARCHAR(30) NOT NULL, 
    lastname VARCHAR(30) NOT NULL, 
    email VARCHAR(50), 
    reg_date TIMESTAMP 
    )"; 
    $conn->exec($sql); 
    echo " created successfully"; 
    } 
catch(PDOException $e) 
    { 
    echo $sql . "<br>" . $e->getMessage(); 
    } 

$conn = null; 
} 
} 
?> 
+1

在你的代碼,如果** **這是你的真實* *代碼。 –

回答

0

您可以嘗試修復你的PHP代碼,並得到這樣的:你有一個語法錯誤

<?php 
session_start(); 
if($_SESSION['user']==''){ 
    header("Location:login.php"); 
}else{ 
    $dbh=new PDO('mysql:dbname=something;host=127.0.0.1', 'something', 'something'); 
    $sql=$dbh->prepare("SELECT * FROM users WHERE id=?"); 
    $sql->execute(array($_SESSION['user'])); 
    while($r=$sql->fetch()){ 
     $sql = "CREATE TABLE `".$r['username']."` (
      id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      firstname VARCHAR(30) NOT NULL, 
      lastname VARCHAR(30) NOT NULL, 
      email VARCHAR(50), 
      reg_date TIMESTAMP 
     )"; 
     try { 
      $dbh->exec($sql); 
      echo " created successfully"; 
     } catch(PDOException $e) { 
      echo $sql . "<br>" . $e->getMessage(); 
     } 
    } 

    $conn = null; 
} 
?> 
+0

我試過了代碼,但仍然無法插入到mysql中。任何可能性? – OverHeat

+0

我修復答案。嘗試將$ conn-> exec($ sql)替換爲$ dbh-> exec($ sql)。因爲你的pdo對象是$ dbh而不是$ conn。 –

0

在查詢字符串中有一些錯誤。你應該刪除一個雙引號,並且表名應該用'而不是'來包裝。所以,你的代碼應該是這樣的:

 $sql = "CREATE TABLE `{$r['username']}` (
      id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      firstname VARCHAR(30) NOT NULL, 
      lastname VARCHAR(30) NOT NULL, 
      email VARCHAR(50), 
      reg_date TIMESTAMP 
     )"; 

而且,即使它不是一個真正相關的話題,你應該問自己,如果每個用戶創建一個表是最好的解決方案。

+0

這是據我所知:/任何方向將是greatful.links或一些例子.... 感謝 – OverHeat

+0

爲什麼你們每個用戶創建一個表?爲了「別人看不見」? 如果是的,你可以看看有: http://stackoverflow.com/questions/17075424/get-the-data-of-specific-user-in-php http://stackoverflow.com/questions/34125900/filtering-mysql-data-in-php-to-only-show-data-of-the-current-sessions-user 該代碼是否適用於修復? – olibiaz

+0

謝謝 沒有代碼仍然不工作。我沒有在dreanweaver中得到任何語法錯誤。在Msql中沒有插入任何東西。 – OverHeat