数据库php脚本,将数据插入表

时间:2017-11-01 06:15:45

标签: php mysql database

我对php很新,对于我的数据库类,我们需要使用php表单插入数据。如果有帮助,我正在使用MySQL工作台,MAMP和phpmyadmin。我的问题是,如何让表单与下面附带的php脚本进行交互。如何获得分配给$ value的标题框中的值,等级为$ value2等等。这些是我服务器中的两个单独文件,当我转到索引并选择我的php脚本时,它返回500错误,所以它现在不起作用。

我已确保数据库名称以及用户和密码正确无误。 附加的图像是我的电影表和列标题 enter image description here

<?php
define('DB_NAME', 'movie_database');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', 'localhost:3036');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$link) {
die('Could not connect: ' . mysql_error());
}

$db_selected = mysql_select_db(DB_NAME, $link);

if (!$db_selected) {
die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}


$value = $_POST['title'];
$value2 = $_POST['rating'];
$value3 = $_POST['Runtime'];  
$value4 = $_POST['movie_rating'];
$value5 = $_POST['release_date'];

$sql = "INSERT INTO movies (title, rating, Runtime, movie_rating, 
release_date) VALUES ('$value', '$value2', '$value3','$value4','$value5')";
echo "Inserted correctly!"
if (!mysql_query($sql)) {
die('Error: ' . mysql_error());
}

mysql_close();
?>

这只是制作文本框:

<form action="form1.php" method="post"/>
<p>Enter Movie Title: <input type="text" name="title"/></p> 
<p>Enter Movie Rating(G,PG,PG-13,R): <input type="text" name="rating"/></p> 
<p>Enter Movie Runtime in minutes: <input type="text" name="Runtime"/></p> 
<p>Enter IMDB Movie Rating(0-10.0): <input type="text" name="movie_rating"/></p> 
<p>Enter Movie Release date(YYYY-MM-DD): <input type="text" name="release_date"/></p>  
<input type="submit" value="Submit"/>
</form> 

编辑:刚发现MAMP有错误日志。查看phperror日志显示:PHP致命错误:未捕获错误:在E:\ MAMP \ MAMP \ htdocs \ forms.php中调用未定义函数mysql_connect():8 堆栈跟踪:

0 {main}

在第8行的E:\ MAMP \ MAMP \ htdocs \ forms.php中抛出

3 个答案:

答案 0 :(得分:1)

所以你有一个缺少;的语法错误(你现在已经修复了),但仍有两个问题:

您的DB_HOST变量设置不正确,应该是:

define('DB_HOST', '127.0.0.1');

您不需要端口号,而MAMP最需要使用localhost IP:127.0.0.1

您的第二个问题是您创建插入查询的方式,当您连接值时,它应该如下所示:

$sql = "INSERT INTO movies (title, rating, Runtime, movie_rating, release_date)
VALUES ('".$value."', '".$value2."', '".$value3."','".$value4."','".$value5."')";

说自PHP 5.5.0以来PHP MySQL已被弃用

因此请尝试使用PHP MySQLi,如下所示:

<?php
$databaseName = 'movie_database';
$databaseUser = 'root';
$databasePassword = 'root';
$databaseHost = '127.0.0.1';

$conn = new mysqli($databaseHost, $databaseUser, $databasePassword, $databasePassword);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

echo "Connected successfully";

// Note* This is basic sanitizing but you can be more careful with this
$value = mysql_real_escape_string($_POST['title']);
$value2 = mysql_real_escape_string($_POST['rating']);
$value3 = mysql_real_escape_string($_POST['Runtime']);
$value4 = mysql_real_escape_string($_POST['movie_rating']);
$value5 = mysql_real_escape_string($_POST['release_date']);

// Concatenate the $values into the string
$sql = "INSERT INTO movies (title, rating, Runtime, movie_rating, release_date)
    VALUES ('".$value."', '".$value2."', '".$value3."','".$value4."','".$value5."')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

?>

答案 1 :(得分:0)

一种方法是再次'停止'和'开始'字符串:

$sql = "INSERT INTO movies (title, rating, Runtime, movie_rating, 
release_date) VALUES ('".$value."', '".$value2."', '".$value3."','".$value4."','".$value5."')";

因为你现在正在做的只是插入“$ value”而不是该变量背后的实际值。

答案 2 :(得分:-1)

你只需在echo语句后忘记分号(;),希望这对你有帮助。

$value = $_POST['title'];
$value2 = $_POST['rating'];
$value3 = $_POST['Runtime'];  
$value4 = $_POST['movie_rating'];
$value5 = $_POST['release_date'];

$sql = "INSERT INTO movies (title, rating, Runtime, movie_rating,
release_date) VALUES ('$value', '$value2', '$value3','$value4','$value5')";
//forget ';' after echo
echo "Inserted correctly!";
if (!mysql_query($sql)) {
die('Error: ' . mysql_error());
}

mysql_close();
?>