Php 为什么不创建表格辛普森?

Php 为什么不创建表格辛普森?,php,mysql,Php,Mysql,这是PHP代码,它充当另一个HTML页面的“操作”,该页面中只有一个表单 它没有显示任何错误,在我单击submit之后,会显示消息“Database created”,但它没有创建表“Simpsons”。为什么会这样 请让我知道我是否应该把更多的细节或评论代码 <?php $database = 'basedados'; $username = 'root'; $password = ''; $first = $_POST['first']; $last = $_POST['last'

这是PHP代码,它充当另一个HTML页面的“操作”,该页面中只有一个表单

它没有显示任何错误,在我单击submit之后,会显示消息“Database created”,但它没有创建表“Simpsons”。为什么会这样

请让我知道我是否应该把更多的细节或评论代码

<?php

$database = 'basedados';
$username = 'root';
$password = '';

$first = $_POST['first'];
$last = $_POST['last'];
$phone = $_POST['phone'];
$mobile = $_POST['mobile'];
$fax = $_POST['fax'];
$email = $_POST['email'];
$web = $_POST['web'];

$con = mysql_connect(localhost, $username, $password);
if (!$con) {
    die('Could not connect: ' . mysql_error());
}

if (mysql_query("CREATE DATABASE IF NOT EXISTS $database", $con)) {
    echo "Database created";
} else {
    echo "Error creating database: " . mysql_error();
}

mysql_select_db($database, $con);
$create_table = "CREATE TABLE Simpsons
                (
                first varchar(15),
                last varchar(15),
                phone varchar,
                mobile varchar,
                fax varchar,
                email varchar,
                web varchar,
                )";
$insert_values = "INSERT INTO Simpsons VALUES ($first','$last','$phone','$mobile','$fax','$email','$web')";
if (table_exists(Simpsons, $database)) {
    mysql_select_db($database) or die("Unable to select database");
    mysql_query($insert_values, $con);
} else {
    mysql_select_db($database) or die("Unable to select database");
    mysql_query($create_table, $con);
    mysql_query($insert_values, $con);
}

function table_exists($table, $db) {
    $tables = mysql_list_tables($db);
    while (list ($temp) = mysql_fetch_array($tables)) {
        if ($temp == $table) {
            return TRUE;
        }
    }
    return FALSE;
}

mysql_close($con);
?>
更新:

嗯。谢谢大家。现在我的代码看起来更像这样:

<?php

$database = 'basedados';
$username = 'root';
$password = '';

$first = $_POST['first'];
$last = $_POST['last'];
$phone = $_POST['phone'];
$mobile = $_POST['mobile'];
$fax = $_POST['fax'];
$email = $_POST['email'];
$web = $_POST['web'];

$con = mysql_connect(localhost, $username, $password);
if (!$con) {
    die('Could not connect: ' . mysql_error());
}

if (mysql_query("CREATE DATABASE IF NOT EXISTS $database", $con)) {
    echo "Database created";
} else {
    echo "Error creating database: " . mysql_error();
}

$create_table = "CREATE TABLE IF NOT EXISTS simpsons
                (
                first varchar(15),
                last varchar(15),
                phone varchar(15),
                mobile varchar(15),
                fax varchar(15),
                email varchar(15),
                web varchar(15)
                )";
$insert_values = "INSERT INTO simpsons VALUES ('$first','$last','$phone','$mobile','$fax','$email','$web')";

mysql_select_db($database, $con) or die("Unable to select database: " . mysql_error());
mysql_query($create_table, $con) or die("Error creating table: " . mysql_error());
mysql_query($insert_values, $con) or die("Error inserting values: " . mysql_error());
mysql_close($con);
?>
我认为它看起来更干净,尽管我不确定我是否正确使用了mysql\u error函数。
再次感谢您。

一个逗号加上很多逗号,您需要指定varchar字段的长度

CREATE TABLE Simpsons
            (
            first varchar(15),
            last varchar(15),
            phone varchar(xx),
            mobile varchar(xx),
            fax varchar(xx),
            email varchar(xx),
            web varchar(xx)
            )

在$first之前,您的表中缺少一个报价:

INSERT INTO Simpsons VALUES ($first','$last','$phone','$mobile','$fax','$email','$web')
但老实说,如果没有一个好的错误报告,很难定义哪些是代码中的错误,哪些是文章中的打字错误

顺便说一句:看看

为什么在调用mysql\u select\u db$数据库之前只有几行代码,$con时调用mysql\u select\u db$数据库?我会放弃的

不是答案,而是一个重构建议,我无法将其纳入评论:

if (table_exists(Simpsons, $database)) {
    mysql_select_db($database) or die("Unable to select database");
    mysql_query($insert_values, $con);
} else {
    mysql_select_db($database) or die("Unable to select database");
    mysql_query($create_table, $con);
    mysql_query($insert_values, $con);
}
可能会变成

// connect statement dropped
if (!table_exists(Simpsons, $database)) {
    mysql_query($create_table, $con);
}
mysql_query($insert_values, $con);
甚至可以通过修改创建查询的第一行以读取CREATE TABLE Simpsons(如果不存在)并将上述行替换为:

mysql_query($create_table, $con);
mysql_query($insert_values, $con);

如果您不知道如何使用,请首先尝试通过cli或phpmyadmin执行此代码。请参见第页的示例。这非常容易

您会遇到哪些错误?什么是错误;比如说?检查mysql\u select\u db调用中的错误……我应该只键入echo mysql\u error;在代码的任何部分?我把它放在了代码的末尾,这里显示的是:您的SQL语法有一个错误;检查与MySQL服务器版本相对应的手册,以了解在第1行的“h”、“h”、“h”、“h”和“h”附近使用的正确语法。这些“h”是来自表单的变量。在每次调用mysql之后,您应该检查mysql\u错误。而且不仅仅是在development.table_existssimpson,$database Simpson应该在它周围加引号。但这可能不是错误。Stegeman暗示的是,您的代码很容易受到SQL注入攻击。在查询中使用之前,应该将所有字符串包装在mysql\u real\u escape\u字符串中。看见