注意能够在数据库中创建表并插入值

时间:2017-11-13 17:41:48

标签: php mysql

我使用MAMP作为我的localhost环境,我正在尝试通过php将值从html表单传递到数据库。当我提交表单时我面临以下错误:

  

INSERT INTO social(facebook,google,twitter)VALUES(' sdf',' sdf',' sdf')   SQLSTATE [42S02]:未找到基表或视图:1146表' firsttest.social'不存在

HTML:



<html>
<form name='form' method='post' action="m.php">

Fb : <input type="text" name="fb" >
google : <input type="text" name="google" >
twitter : <input type="text" name="twitter" >

<input type="submit" name="save_to_db" value="Submit">  

</form>
</html>
&#13;
&#13;
&#13;

PHP:

&#13;
&#13;
<?php
  if(isset($_POST['save_to_db'])){
	  
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "firsttest";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // sql to create table
    $sql = "CREATE TABLE social (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    facebook VARCHAR(30) NOT NULL,
    google VARCHAR(30) NOT NULL,
    twitter VARCHAR(50),
    reg_date TIMESTAMP
    )";
	
    $sql = "INSERT INTO social (facebook, google, twitter)
    VALUES ('".$_POST["fb"]."','".$_POST["google"]."','".$_POST["twitter"]."')";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "New record created successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;	
}
?>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

您没有执行CREATE TABLE查询,而是立即使用INSERT查询覆盖它。

尝试使用xdebug之类的调试工具,这样您就可以逐步完成代码,这将有助于您轻松找到代码中的错误。

此外,每次要将数据保存到数据库时创建数据库表都是不明智的。尝试在开始使用之前设置整个数据库。