2013-08-05 204 views
0

我有一个表单发送数据到下面的php。没有错误出现,但没有信息被插入数据库,我不明白为什么。我有三重检查所有的表名等,一切都是正确的。代码回显没有显示在表单中,但它不会更新到数据库!mySQL插入不会更新数据库

<?php 
    //variables for db 
    $username = ""; 
    $password = ""; 
    $hostname = "localhost"; 
    $dbname = "infinity"; 

    //connection to the database 
    $con = mysql_connect($hostname, $username, $password); 

    if($con == FALSE) 
    { 
     echo 'Cannot connect to database' . mysql_error(); 
    } 

    mysql_select_db($dbname, $con); 

    $name=$_POST["name"]; 
    $logo=$_POST["logo"]; 
    $logo="<img src=\"images/".$logo."\" alt=\"$name Logo\" />"; 
    $blurb=$_POST["blurb"]; 
    $link=$_POST["link"]; 
    echo $name; 
    echo $logo; 
    echo $blurb; 
    echo $link; 
    //Insert Values into Database 
    mysql_query("INSERT INTO `infinity`.`sponsors` (`name`, `logo`, `blurb`, `link`) VALUES ('$name', '$logo', '$blurb', '$link');"); 
?> 
+0

您不是从'mysql_query()'返回并检查错误。检查'echo mysql_error()'看看它为什么失败。这可能有多种原因,其中最重要的是您的输入未转义。任何输入中出现的任何单引号_将破坏您的查询,同时它也容易受到SQL注入的影响。这是开始使用PDO学习参数化查询的好时机,因为不推荐使用'mysql_query()'。 –

+0

您在这里容易受到[SQL注入](http://en.wikipedia.org/wiki/SQL_injection)的影响,并且使用已弃用的PHP函数。你应该研究新的代码['PDO'或'mysqli'](http://php.net/manual/en/mysqlinfo.api.choosing.php)! – msturdy

+0

'infinity'.'sponsors'? –

回答

0

想方设法把你的错误信息查询:

mysql_query($your_query) OR die(mysql_error()); 
0

试试这个

 mysql_query("INSERT INTO `infinity`.`sponsors` (`name`, `logo`, `blurb`, `link`) 
VALUES ('$name', '$logo', '$blurb', '$link')") or die(mysql_error()); 

否则你做检查。

$sql ="INSERT INTO `infinity`.`sponsors` (`name`, `logo`, `blurb`, `link`) 
    VALUES ('$name', '$logo', '$blurb', '$link')"; 
$sqlinset= mysql_query($sql) or die(mysql_error()); 
    echo $sql; 
    echo $sqlinset; 
0

试试这个:

mysql_query("INSERT INTO `infinity`.`sponsors` (`name`, `logo`, `blurb`, `link`) VALUES ('$name', '$logo', '$blurb', '$link');", $con); 

而且务必从SQL ijection保护这些你把你的数据库变量XSS攻击。