【问题标题】:Database php scripting, insert data into table数据库php脚本,将数据插入表中
【发布时间】:2017-11-01 06:15:44
【问题描述】:

我对 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:8 中未定义的函数 mysql_connect() 堆栈跟踪:

0 {主}

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

【问题讨论】:

  • 提示:使用 MAMP,您可以转到 /Applications/MAMP/logs 并检查 apache_error.logphp_error.log。看起来您的 $values 很可能没有正确输入到字符串中
  • 不知道 MAMP 有这个,谢谢。我在 phperror 日志中发现了以下错误。 PHP 解析错误:语法错误,意外的 'if' (T_IF),期待 ',' 或 ';'在 E:\MAMP\MAMP\htdocs\forms.php 第 29 行
  • 这有帮助 - 我刚刚发现语法错误 - echo "Inserted correctly!" 你错过了结束 ;。哪个最有可能导致您的 500 错误!
  • 修复了这个问题,现在这个错误显示:PHP 致命错误:未捕获的错误:调用 E:\MAMP\MAMP\htdocs\forms.php:8 中未定义的函数 mysql_connect() 堆栈跟踪:#0 {main} 在第 8 行的 E:\MAMP\MAMP\htdocs\forms.php 中抛出
  • 安装的是哪个php版本?

标签: php mysql database


【解决方案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 MySQL 自 PHP 5.5.0 起已弃用

所以尝试使用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();

?>

【讨论】:

    【解决方案2】:

    一种方法是再次“停止”和“启动”字符串:

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

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

    【讨论】:

      【解决方案3】:

      你只是忘记了 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();
      ?>
      

      【讨论】:

        猜你喜欢
        • 2012-11-10
        • 1970-01-01
        • 1970-01-01
        • 2015-08-25
        • 2015-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-27
        相关资源
        最近更新 更多