尝试使用php

时间:2016-04-27 04:19:17

标签: php mysql

我有一个现有的表格,我试图从表单提交中插入数据。

我想我需要另一组眼睛来查看我的代码。它有一个问题,此时我不确定是什么。

我填写表格,似乎提交,我查表,我什么都没得到。没有插入数据。

如果现在没有使用某些值,是否可以阻止数据插入表中?无论如何都不应该插入表单上的表单输入吗?我试图只使用表单中的值,但仍然无效。

例如,现在表单输入仅用于first,last,title,genre,about和picture。其余的只存在于表中。目前无法输入其余字段的数据。

希望有人有解决方案吗?

$servername = "server";
$username = "user";
$password = "pass";
$dbname = "db";

if (isset($_POST['submit'])){
$conn = mysqli_connect($servername,$username,$password,$dbname);
if (!$conn) {
    die("Connection failed: " . mysqli_error());
}


$first      = mysqli_real_escape_string($conn, $_POST['First']);
$last       = mysqli_real_escape_string($conn, $_POST['Last']);
$title      = mysqli_real_escape_string($conn, $_POST['Title']);
$storylink  = mysqli_real_escape_string($conn, $_POST['StoryLink']);
$genre      = mysqli_real_escape_string($conn, $_POST['Genre']);
$about      = mysqli_real_escape_string($conn, $_POST['About']);
$link       = mysqli_real_escape_string($conn, $_POST['Link']);
$picture    = mysqli_real_escape_string($conn, $_POST['Picture']);
$alt        = mysqli_real_escape_string($conn, $_POST['ALT']);

$sql = "INSERT INTO ContrTemp (`First`,`Last`,`Title`,`StoryLink`,`Genre`,`About`,`Link`,`Picture`,`ALT`)
VALUES ('$first','$last','$title','$storylink','$genre','$about','$link','$picture','$alt')";

mysqli_query($conn, $sql) or die('Error: ' . mysqli_error($conn));
mysqli_close($conn);
}

这是表单中的一个输入字段。其他几乎是一样的。

<input type="text" id="ContrTitle" name="Title" placeholder="Title" class="inputFields" style="width:650px;" />

输入中的名称是否存在问题?

sql表结构:

CREATE TABLE IF NOT EXISTS `ContrTemp` (
  `ID` int(5) NOT NULL AUTO_INCREMENT,
  `First` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  `Last` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  `Title` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `StoryLink` varchar(140) COLLATE utf8_unicode_ci NOT NULL,
  `Genre` varchar(11) COLLATE utf8_unicode_ci NOT NULL,
  `About` varchar(2000) COLLATE utf8_unicode_ci NOT NULL,
  `Link` varchar(125) COLLATE utf8_unicode_ci NOT NULL,
  `Picture` varchar(500) COLLATE utf8_unicode_ci NOT NULL,
  `ALT` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

现在我实际上正在访问数据库,显示一条记录,但没有插入数据。之前,根本没有插入任何记录。

4 个答案:

答案 0 :(得分:2)

您可以尝试使用此插件来插入数据

int get_option(){...}

main(){
  int option;
  while(1){
    option = get_option();
    switch(option){
      case 0: 
        /* do something */
        continue;
      case 1:
        /* do something */
        break;
      case 2:
        /* do something */
        continue;  
      default:
    }
    /* this is executed if (option!=0)&&(option!=2)
       otherwise skipped */
  }
}

答案 1 :(得分:2)

我认为你做得很好,但最后一次尝试将这些符号[反引号]放在你的字段周围以理解它们只是字段的mysql。

$sql = "INSERT INTO ContrTemp (`First`,`Last`,`Title`,`StoryLink`,`Genre`,`About`,`Link`,`Picture`,`ALT`)
VALUES ('$first','$last','$title','$storylink','$genre','$about','$link','$picture','$alt')";

答案 2 :(得分:1)

您的mysqli_error()语法不正确,您需要指定连接,以便mysqli_error($conn)正确地向您反馈SQL错误。正如Mitkosoft在评论中提到的,您的一些列名是MySQL keywords。在反引号中始终包含列名可能是一个好习惯。

所以:

$sql = "INSERT INTO ContrTemp (`First`,`Last`,`Title`,`StoryLink`,`Genre`,`About`,`Link`,`Picture`,`ALT`)
VALUES ('$first','$last','$title','$storylink','$genre','$about','$link','$picture','$alt')";

mysqli_query($conn, $sql) or die('Error: ' . mysqli_error($conn));

此外,您无需选择带mysqli_select_db($conn,$dbname);的数据库,因为在上面的登录命令mysqli_connect上选择了数据库。

进一步查询:

  • 您的数据库访问帐户是否允许INSERT到此数据库?
  • 您可以使用PHPMyAdmin,MySQL Workbench(或者您用来查看数据库的那个)接口将表格中的数据直接插入到数据库中吗?

答案 3 :(得分:0)

我曾希望这就像我上面提供的代码一样简单,因此我没有提到这段代码被用作WordPress模板的一部分。我认为这不会成为一个问题因为模板重量很轻。

话虽如此,我只是采用了我处理数据插入的PHP代码块,并将其放在模板的顶部。工作就像一个魅力..