如何使用php中的数字创建数据库

时间:2011-11-17 10:01:08

标签: php mysql html

我是PHP和MySQL的新手,如何创建一个电话号码为数据库名称的数据库?电话号码的格式为+256720742675。我已经尝试了下面的代码,但继续犯错误。

<?php

$database= $_POST[PhoneNumberTextBox];

//check for MySQL server connection

$connection = mysql_connect("localhost","root","");

if (!$connection)
{
die('Could not connect to database: ' . mysql_error());
}
//Create database 

$sql= "CREATE DATABASE $database";


if(!mysql_query($sql,$connection))
{

die('Could not create database'.mysql_error());

}
else

echo"Database Created<br\>";

//Close connection

mysql_close($connection);

?> 

3 个答案:

答案 0 :(得分:4)

不知道从哪里开始...来自:

  • 您不应在php文件中使用root数据库用户,或
  • 您不应该从_POST请求
  • 创建数据库

我可以看到发生了很多不好的事情......

答案 1 :(得分:3)

首先,为每个数字创建一个表是不对的。

不允许使用数字启动数据库名称。如果您坚持,请尝试在其前面添加一封信。

例如:N256720742675

答案 2 :(得分:3)

答案是将电话号码存储在一个字段中。不是每个电话号码创建一个新数据库:

创建一个这样的表:

create table phonenumbers (
  phone varchar(20) not null primary key,
  related_field1 
  ......
  related_field25

现在你可以使用这样的代码:

$conn = mysql_connect("localhost","named_user","long_password_with_entropy"); 
$phone = mysql_real_escape_string($_POST['PhoneNumberTextBox']);
$sql = "INSERT INTO phonenumbers (phone, field1, field2, field3) 
        VALUES ('$phone','1','2','3') ";
//The quotes    ^      ^  are essential !

现在,您正在以可以检索它们的方式将数据存储在数据库中。

您可以按照这样的语音选择所有数据:

SELECT p.*, c.*
FROM phonenumbers p
LEFT JOIN calls c ON (c.phonenumber = p.phone)
WHERE p.phone = '$phone';

硬规则

  1. 在您的用户帐户中设置强密码。
  2. 请勿使用root登录。
  3. 使用$_*转义所有mysql_real_escape_string超级全局变量。 (甚至更好:使用PDO)。
  4. 请参阅:How does the SQL injection from the "Bobby Tables" XKCD comic work?
    请参阅本教程关于mysql和php:http://www.tizag.com/mysqlTutorial/
    这是少数能够正确理解这一话题的人之一。