2016-02-04 132 views
1

我想插入数据到mysql数据库,但所有的事情都没有发生错误,但当我浏览数据,所以它没有插入到数据库在这里我的代码好心检查出来。数据没有插入到mysql数据库在php

这里我的html代码:

<html> <head> 

<title>Insert Latest News</title> 

</head> 

<body> 

<form action="insert_post.php" method="POST" enctype="multipart/form-data"> 

<table align="center" border="10" width="800"> 

<tr> <td align="center" colspan="5" bgcolor="yellow"><h1>Insert Latest News</h1></td> </tr> 

<tr> <td>Post Title</td> <td><input type="text" name="title" size="30" /></td> </tr> 

<tr> <td>Post Author</td> <td><input type="text" name="author" /></td> </tr> 

<tr> <td>Post Image</td> <td><input type="file" name="image" /></td> </tr> 

<tr> <td>Post Content</td> <td><textarea name="content" cols="50" rows="20"></textarea></td> </tr> 

<tr> <td colspan="5" align="center"><input type="submit" name="submit" value="Publish" /></td> </tr> </table> 

</form> </body> </html> 

这里是我的连接脚本

$connect = mysql_connect("localhost","root",""); 
$con = mysql_select_db("express", $connect); 
if ($con){ 
    echo ""; 
} else { 
    echo "databse not connected"; 
} 

这里我的PHP代码:

<?php require("connect.php"); 

if (isset($_POST['submit'])){ 

    $title = $_POST['title']; 
    $author = $_POST['author']; 
    $content = $_POST['content']; 
    $image_name = $_FILES['image']['name']; 
    $image_type = $_FILES['image']['type']; 
    $image_size = $_FILES['image']['size']; 
    $image_tmp = $_FILES['image']['tmp_name']; 
    $date = Date('y/m/d'); 

    if ($title=='' or $author=='' or $content=='' or $image_name==''){ 

     echo "<script>alert('Any feild is empty')</script>"; 
     exit(); 
    } 
    if ($image_type=='image/jpeg' or $image_type=='image/png' 
    or $image_type=='image/gif' or $image_type=='image/jpg'){ 

     echo ""; 
    } else { 
     echo "<script>alert('your image type is not allowed')</script>"; 
    } 
    if ($image_size<=1000000){ 
     move_uploaded_file ($image_tmp, "images/$image_name"); 
     exit(); 
    } else { 

     echo "<script>alert('Image is larger, not allowed by admin ')</script>"; 
    } 

    $query = "INSERT INTO news 
      (news_title, news_author, news_content, news_image, news_date) 
      values($title,$author, $content, $image_name, $date,)"; 

    if ($query){ 
     echo "<center><h1>Your News has Been Published</h1></center>"; 
    } 
} 
?> 
+0

额外的','有你'$ query' –

+1

'($标题, $ author,$ content,$ image_name,$ date,)'因为几个原因而失败。 –

+0

你的db连接器在哪里? –

回答

2

你忘了执行查询: $result = mysql_query($query);

你忘了建立连接:

$connection = mysql_connect(DB_HOST, DB_USER , DB_PASS) 
or die("Could not connect to the database."); 
mysql_select_db(DB_NAME) or die ("Database could not be selected."); 

我 - 的方式 - 利用改为1048576 1000000作为最大图像尺寸。

+0

我建立了数据库连接并通过require函数添加它们,如下所示:require(“connect.php”);并在connect.php文件我编码︰$ connect = mysql_connect(“localhost”,“root”,“”); $ con = mysql_select_db(“express”,$ connect); 如果($ CON){ 回声 “”; } else { echo“databse not connected”; } –

+0

好的。但无论如何,你忘了执行它,然后用'mysql_query($ query)'或'mysqli_query($ query)' –

+0

@ J.Gower sidenote:'mysqli_query($ query)'MySQLi_ API需要将db连接传递给它,作为第一个参数。 I.e .:'mysqli_query($ connection,$ query)'。然而,他们用来连接的API是完全未知的。 –

3

您的代码基本上是可怕的:

1)易受SQL injection attacks
2)在所有
3号上传验证)简单地假定所有操作

和您的主要问题的成功,忽略其它:

在您的查询字符串由于你缺乏引号和逗号外的

4)语法错误::

$query = "INSERT INTO news 
(news_title, news_author, news_content, news_image, news_date) 
values('$title','$author', '$content', '$image_name', '$date',)"; 
     ^------^-^-------^--^--------^--^-----------^--^-----^---missing 
                  ^---wrong 

如果你已经完成任何类型的防御性编程,例如检查错误,你会被告知你的SQL语法问题...永远不会EVER假设成功。总是假设失败,检查失败,并将成功视为令人惊喜的事情。

3

($title,$author, $content, $image_name, $date,)由于几个原因而失败。

字符串文字要求引用它们,并且您有一个尾随逗号。

('$title','$author', '$content', '$image_name', '$date')

参考:

您还没有查询和您正在使用与连接MySQL的API是未知的。

  • connect.php潘多拉的盒子

咨询:http://php.net/manual/en/mysqlinfo.api.choosing.php

查询方法供你上阅读起来,在查询PHP MySQL数据库的时候。

,并确保不要混用这些。

咨询:Can I mix MySQL APIs in PHP?

添加error reporting到您的文件(S)的顶部,这将有助于找到错误。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// Then the rest of your code 

旁注:显示错误应该只在分期完成,并且从不生产。

还检查您的查询错误。我无法提供链接,因为我不知道您使用哪个MySQL连接。

  • mysql_?
  • mysqli_?
  • PDO?
  • 其他?

  • 只有你知道。

您现在的代码对SQL injection开放。使用prepared statementsPDOprepared statements


脚注:

还要确保该文件夹你想要上传到,有它设置正确的权限。

错误报告会告诉你是否有问题。


编辑:和最后的努力提供帮助。

我将在这里假设MySQLi_连接。如果是MySQL_或PDO,则需要查看手册。

  • 我相信我已经做得足够帮助你解决这个问题。

旁注:我用$connection作为连接变量。只有你知道你的connect.php文件中使用了什么。

$query = mysqli_query($connection, "INSERT INTO news 
      (news_title, news_author, news_content, news_image, news_date) 
      values('$title','$author', '$content', '$image_name', '$date')"); 

if ($query){ 

    echo "<center><h1>Your News has Been Published</h1></center>"; 
} 

else{ 
    echo "Error: " . mysqli_error($connection); 
    } 

附加编辑:

看到这个评论您放置:

“我在这里的connect.php文件代码:$连接=的mysql_connect(” localhost “的” 根“;”“”); $ con = mysql_select_db(“express”,$ connect); if($ con){echo“”;} else {echo“databse not connected”;}“

您需要检查这里的真实错误,使用mysql_error()

然后,我上面的编辑将需要更改为mysql_query(),如果需要连接,它需要是最后一个参数。

我建议你做的是切换到MySQLi_或PDO API。

这些链接已经在我的答案中提供。

MySQL_方法。

$query = mysql_query("INSERT INTO news 
      (news_title, news_author, news_content, news_image, news_date) 
      values('$title','$author', '$content', '$image_name', '$date')"); 

if ($query){ 

    echo "<center><h1>Your News has Been Published</h1></center>"; 
} 

else{ 
    echo "Error: " . mysql_error(); 
    } 

旁注:如果需要连接,请if ($query, $connection)

如果还是失败,那么你很可能需要切换到任何MySQLi_或PDO。

  • 祝你好运。
+0

但我试着在我的另一台笔记本电脑上的相同代码,以便数据正确插入到数据库中,我想我的wamp服务器的任何问题我卸载,然后安装它很多次,但问题是相同的我正在使用Windows 7 64位。 –

+0

@ZubairAli我在你的问题和我的回答下给你留下了一条评论。我们不知道您正在使用哪个MySQL API进行连接,或者您是否首次成功连接。正如我和其他人所说的,您没有查询数据库,并且需要将连接传递给它。这是未知的。你需要阅读我在答案中留下的链接,然后从那里出发。没有什么我可以补充的,对不起。检查错误,正如我在答复中所述。 –

+0

@ZubairAli我已经对我的答案做了一个额外的编辑,试图帮助你更多。重新加载并查看**编辑:并最终尝试帮助。** - 这将是最后的尝试,对不起。我真诚地祝你在这个好运。 *干杯* –

1

对于一些人,谁喜欢我发现大部分的答案也没治好的问题,尝试

if (!mysqli_commit($link)) print("<p>Transaction commit failed</p>\n"); 

似乎有些MySQL的(或MariaDB的)发行可有自动提交关闭。关键在于,当我直接将查询粘贴到mysql中时,我发现ID正在递增,表中只有数据。

-1

你忘了在mysql中值引号插入

$query = "INSERT INTO news 
      (news_title, news_author, news_content, news_image, news_date) 
      values($title,$author, $content, $image_name, $date,)"; 

你必须用引号然后保存

$query = "INSERT INTO news 
      (news_title, news_author, news_content, news_image, news_date) 
      values('$title', '$author', '$content', '$image_name', '$date',)"; 
+0

你能格式化你的代码吗?你的答案是不可读的。 – IanS