2016-08-02 170 views
-1

我不明白为什么这个PHP文件的值没有被插入到我的SQL数据库中。该代码几乎与我用于其他表格的正在运行的PHP文件完全相同。代码如下:值没有被插入SQL数据库

<?php 
mysql_connect("xxx","xxx","xxx"); 
mysql_select_db("andrew_history"); 
$Name=$_POST['Name']; 
$Year=$_POST['Year']; 
$Press=$_POST['Press']; 
$Description = $_POST['Description']; 
$Title = $_POST['Title']; 


$dbLink = mysql_connect("xxxx", "xxxx", "xxxxxx"); 
    mysql_query("SET character_set_client=utf8", $dbLink); 
    mysql_query("SET character_set_connection=utf8", $dbLink); 

if($submit) 
{ 
    if($Name&&$Year&&$Press&&$Description&&$Title) 
    { 
     $insert=mysql_query("INSERT INTO historytable (Name,Year,Press,Description,Title) VALUES ('$Name','$Year','$Press', '$Description', '$Title') "); 
     echo "<meta HTTP-EQUIV='REFRESH' content='0; url=history.php'>"; 
    } 
    else 
    { 
     echo "please fill out all fields"; 
    } 
} 
?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>History</title> 
</head> 

<body> 
<center> 
<form action="history.php" method="POST"> 
<table> 
<tr><td>Name: <input type="text" name="Name"/></td></tr> 
<tr><td>Year: <input type="text" name="Year"/></td></tr> 
<tr><td>Press: <input type="text" name="Press"/></td></tr> 
<tr><td>Title: <input type="text" name="Title"/></td></tr> 
<tr><td colspan="2">Description: </td></tr> 
<tr><td colspan="5"><textarea name="Description" rows="10" cols="50"></textarea></td></tr> 
<tr><td colspan="2"><input type="submit" name="submit" value="Description"></td></tr> 
</table> 
</form> 

<?php 
$dbLink = mysql_connect("xxxx", "xxxx", "xxxxx"); 
    mysql_query("SET character_set_results=utf8", $dbLink); 
    mb_language('uni'); 
    mb_internal_encoding('UTF-8'); 


$getquery=mysql_query('SELECT * FROM historytable ORDER BY id DESC'); 


while($rows=mysql_fetch_assoc($getquery)) 
    { 
     $id=$rows['id']; 
     $Name=$rows['Name']; 
     $Year=$rows['Year']; 
     $Press=$rows['Press']; 
     $Description=$rows['Description']; 
     $Title=$rows['Title']; 
     echo $Name . $Year . '<br/>' . '<br/>' . $Press . '<br/>' . '<br/>' . $Description . $Title; 
    } 
?> 

</body> 
</html> 

链接到网站:http://aswanson.net/Work/history.php

+1

您可以查看任何错误的'mysql_error'。但!! mysql_ *函数从PHP7开始已被弃用和删除。而这只是不好的做法,因为你已经开放了SQL注入。 (想象一下名叫O'Leary的人)。现在切换到PDO或mysqli,然后再过分。 – aynber

+0

您正在测试$ submit,但您在设置POST中的其他变量时未设置$ submit。另外,您需要过滤您的输入并参数化您的查询。并且使用PDO或mysqli_作为您正在使用的方法已被弃用 – VikingBlooded

+0

'if($ submit)'我认为这是错误。您没有定义$提交变量 –

回答

0

if($ submit)here is the mistake.you are set any $ submit variable yet yet.please check below code。

<?php 
mysql_connect("xxx","xxxx","xxxx"); 
mysql_select_db("andrew_history"); 
$Name=$_POST['Name']; 
$Year=$_POST['Year']; 
$Press=$_POST['Press']; 
$Description = $_POST['Description']; 
$Title = $_POST['Title']; 

$dbLink = mysql_connect("xxxx", "xxxx", "xxxx"); 
mysql_query("SET character_set_client=utf8", $dbLink); 
mysql_query("SET character_set_connection=utf8", $dbLink); 

if(isset($_POST['submit'])) 
{ 
    if(!empty($Name) && !empty($Year) && !empty($Press) && !empty($Description) && !empty($Title)) 
    { 
    $insert=mysql_query("INSERT INTO historytable (Name,Year,Press,Description,Title) VALUES ('$Name','$Year','$Press', '$Description', '$Title') "); 
    echo "<meta HTTP-EQUIV='REFRESH' content='0; url=history.php'>"; 
} 
else 
{ 
    echo "please fill out all fields"; 
} 
} 
?> 
+0

这将“0”这样的值视为逻辑错误的有效数据,并且无法插入它们。 – tadman

+0

编辑@tadman现在就开始吧!那是r8? –

+0

'isset'是这里问题的一部分。其余的是检查与'empty()'。这还包括原始中存在的一堆无用的代码,如冗余连接。我已编辑删除用户名/密码数据。 – tadman

1

我将开始通过添加错误检查所有MySQL调用打印适当的消息时,他们无法调试这一点。确保包含由mysql_error()返回的消息。一旦你用适当的诊断仪器,这个问题有希望会变得明显。

这就是说,两个音符:

  • mysql_ API已被弃用,你应该使用mysqli_或PDO,除非这是遗留代码。
  • 确保正确转义用户输入以避免SQL注入攻击。这个问题现在已经公开发布了您的网站的URL以及易受攻击的代码,这一点尤其重要。一个恶意的人现在知道他需要做什么来对你的服务器运行任意的MySQL查询。