2016-04-27 72 views
1

我有一个现有的表,我试图从表单提交插入数据。问题试图用php将数据插入MySQL表

我想我需要另一组眼睛来查看我的代码。有一个问题,在这一点上,我不知道是什么。

我填写表格,它似乎提交,我检查表,我什么也得不到。没有数据被插入。

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

例如,现在表单输入仅适用于第一个,最后一个,标题,流派,关于和图片。其余的只存在于表格中。目前无法输入剩余字段的数据。

希望有人有解决方案?

$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 ; 

现在我居然打了数据库,记录显示,但插入任何数据。之前,根本没有插入记录。

+1

你已经通过'musqli_connect'连接你的数据库,所以不需要'mysqli_select_db($ conn,$ dbname);'echo你的'$ sql'并运行'phpmyadmin'来检查什么是问题。 –

+0

请回显您的$ sql查询并运行到phpmyadmin。 –

+0

我收到此错误:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在'$ sql =“附近使用正确的语法。在行处插入ContrTemp('First','Last','Title','StoryLink','Genre','' 1 – Marlon

回答

0

我希望这已经像上面提供的代码一样简单,因此我没有提到这个代码被用作WordPress模板的一部分。我不认为这会成为一个问题,因为模板非常轻。这就是说,我只是把我的php代码块处理数据插入,并将其放置在模板的顶部。工作就像一个魅力..

2

你可以试试这个插入数据

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

这也行不通。 – Marlon

+0

你可以告诉我你的SQL表架构吗 –

+0

我正在编辑帖子以显示表的结构。我希望有所帮助。 – Marlon

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')"; 
+0

我实际上已经尝试过这个,因为我有另一张使用背部蜱和蜱的桌子。不幸的是,这也没有奏效。 – Marlon

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_connect选择上面mysqli_select_db($conn,$dbname);选择分贝。

进一步查询:

  • 是您的数据库访问帐户允许插入到这个数据库?
  • 您可以使用诸如PHPMyAdmin,MySQL Workbench(或您用于查看数据库的任何一个接口)之类的接口将与您的表单中相同的数据直接插入到数据库中吗?
+0

我已经将我的代码更新到了我现在拥有的代码,它在提交表单时仍然不会将数据插入到表中。 – Marlon

+0

@Marlon,但你没有得到错误的反馈?你是否还纠正了其他[第一个] mysqli_error()实例?打开[PHP错误报告](http://stackoverflow.com/questions/1053424/how-do-i-get-php-errors-to-display)。 – Martin

+0

@Marlon我为你解答了一些问题。 – Martin