Noob:尝试使用Input值来设置php数据库名称

时间:2014-10-09 05:14:03

标签: php mysql

我试图将输入值用作数据库的名称,但它不起作用

<html>
<form action="config.php" method="Post">
<table>
    <tr><td>DB Name: <input type="text" name="dbname"></td></tr>
    <tr><td><button type="submit" name="submit_two"> Submit</button></td></tr>
</table>
</form>
</html>

的config.php

<?php
$dbname = "";
if (isset($_POST['submit_two'])){
    $dbname = test_input($_POST["dbname"]);
    $data = "CREATE DATABASE  IF NOT EXISTS $dbname";
    if (!$data) {
        echo "could not connect" . mysql_error();
    } elseif ($dbname == ""){
        echo "no";
    }else{
        echo "gud to go";
    }
    }
function test_input($data)
    {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }
?>

它一直在显示&#34; gud to go&#34;但是当我检查数据库时,将不会创建任何创建

2 个答案:

答案 0 :(得分:2)

您忘记运行mysql查询:

<?php
//first, create the connection
$con = mysqli_connect("the_db_host","db_user","db_pass");

//then, execute your code like:
$dbname = "";
if (isset($_POST['submit_two'])){
    $dbname = test_input($_POST["dbname"]);
    $data = mysqli_query($con, "CREATE DATABASE  IF NOT EXISTS $dbname");
    if (!$data) {
        echo "could not connect" . mysqli_error($con);
    } elseif ($dbname == ""){
        echo "no";
    }else{
        echo "gud to go";
    }
}

function test_input($data)
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
?>

<强>更新 根据@ krishna的评论,我更新了这个答案。

关于mysqli_*超过mysql_*,有一些原因:

  • OO界面
  • 支持交易
  • 支持准备好的陈述
  • 支持多种陈述

official documentation

中的更多信息

答案 1 :(得分:0)

从您的代码中,您所做的就是创建几个字符串;在某些时候,您必须连接到数据库并以SQL身份执行这些操作。例如,请参阅this有关如何使用PDO_mysql的教程。

您可能还想查看类似项目的代码,例如this list of "10 Database Management Tools for Developers"上的项目,以获取想法并了解哪些内容在长期内有效/无效。