【问题标题】:Creation table with php用php创建表
【发布时间】:2014-04-12 13:08:36
【问题描述】:

我在 PHP 中的“创建表”有问题。表的名称是注册用户的名称。问题出在“$nuovidati”中。注册脚本工作但不创建表.....

代码:

    <?php
    require('config.php');
    if(isset($_POST['registra']))
    {
        $user = (isset($_POST['user'])) ? trim($_POST['user']) : '';
        $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';
        $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : '';
        if (!get_magic_quotes_gpc()) {
            $user = addslashes($user);
            $pass = addslashes($pass);
            $mail = addslashes($mail);
        }
        if(strlen($user) < 4 || strlen($user) > 12)
            die('Nome Utente troppo corto, o troppo lungo');
        elseif(strlen($pass) < 4 || strlen($pass) > 12)
            die('Password troppo corta, o troppo lunga');
        elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail))
            die('Email non valida');
        elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1)
            die('Nome Utente non disponibile');
        elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
            die('Questo indirizzo email risulta gi&agrave; registrato ad un altro utente');
        else
        {
            $pass = md5($pass);
            $strSQL = "INSERT INTO utenti (user,pass,mail)";
            $strSQL .= "VALUES('$user', '$pass', '$mail')";
            mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
            $index = 'modello.php';
            copy($index, $user) or die("Errore copia.");
            $rin = basename($user, ".php").".php";
            rename($user, $rin);
    $nuovidati = "CREATE TABLE ".$user."
    (
           descrizione varchar(100) DEFAULT NULL,
           data date NOT NULL,
           entrata varchar(10000) NOT NULL,
           uscita varchar(10000) DEFAULT NULL,
           saldo varchar(100) DEFAULT NULL,
           id mediumint(9) NOT NULL AUTO_INCREMENT
    )";
mysql_query($nuovidati) OR die("Erroe: ".mysql_error());
            header('Location: registrato.php');
            exit;
        }
    }
    ?>

这是工作代码:

$nuovidati = "CREATE TABLE $user 
(
        descrizione varchar(100) DEFAULT NULL,
        data date NOT NULL,
        entrata varchar(10000) NOT NULL,
        uscita varchar(10000) DEFAULT NULL,
        saldo varchar(100) DEFAULT NULL,
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        primary key (id)
)"; 
mysql_query($nuovidati) OR die("Errore: ".mysql_error());

【问题讨论】:

  • 去掉".$user."周围的引号和圆点---CREATE TABLE $user
  • 旁注:不要使用MD5存储密码;它很旧,被认为太“快”了。使用 CRYPT_BLOWFISH 或 PHP 5.5 的 password_hash() 函数。另外,eregi() 自 PHP 5.3.0 起已弃用。强烈建议不要依赖此功能。
  • 您似乎没有执行它或设置变量来执行它。尝试删除$nuovidati = 或使用if($$nuovidati){...}
  • 我添加:mysql_query($nuovidati) OR die("Erroe: ".mysql_error());
  • 这样做有效吗?如果没有,它显示了什么错误?

标签: php mysql html


【解决方案1】:

在我看来像是 SQL 错误,试试这个:

"CREATE TABLE $user
(
   id mediumint(9) NOT NULL AUTO_INCREMENT,
   descrizione varchar(100) NULL DEFAULT NULL,
   data date NOT NULL,
   entrata varchar(10000) NOT NULL,
   uscita varchar(10000) NULL DEFAULT NULL,
   saldo varchar(100) NULL DEFAULT NULL,
   PRIMARY KEY (id)
)";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-17
    • 2019-08-08
    • 1970-01-01
    • 2011-09-20
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多