我对php很新,对于我的数据库类,我们需要使用php表单插入数据。如果有帮助,我正在使用MySQL工作台,MAMP和phpmyadmin。我的问题是,如何让表单与下面附带的php脚本进行交互。如何获得分配给$ value的标题框中的值,等级为$ value2等等。这些是我服务器中的两个单独文件,当我转到索引并选择我的php脚本时,它返回500错误,所以它现在不起作用。
我已确保数据库名称以及用户和密码正确无误。
附加的图像是我的电影表和列标题
<?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 :(得分: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();
?>