2013-04-08 54 views
0

我只想说在这里它可能会非常简单。PHP,在将数据插入数据库时​​得到空白的网站。表

我正在一个网站上,用户基本上填写表单,其中提交的一些数据被发送(GET)到另一个包含我的数据库连接脚本的php页面,然后进入以INSERT的形式执行SQL查询。此页面只显示在空白处。如果没有mysql_error(),我有一些应该显示的html元素。

下面是页面的样子,我在这里做错了什么?

  <?php                   
      include '/partials/header.php';            
      include '/functions/db_connection.php';          

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

      $value0 = mysql_real_escape_string($_POST["value0"]);       
      $value1 = mysql_real_escape_string($_POST["value1"]);     
      $value2 = mysql_real_escape_string($_POST["value2"]);     
      $value3 = mysql_real_escape_string($_POST["value3"]);     
      $value4 = mysql_real_escape_string($_POST["value4"]);       
      $value5 = date("d-m-Y");              

      $query = "INSERT INTO db.my_table(value0, value1, value2, value3, value4, value5, value6, value7) 
         VALUES ('. $value0 .',           
           '. $value1 .',          
           '. $value2 .',          
           '. $value3 .', 
           '. $value4 .',           
           '. $value5 .',           
           'enum-value', 
           '. $value7 .');";           

       $result = mysql_query($query);           

       if(!$result)                
       { 
       //something went wrong, display the error        
       echo 'Congratulations, something went wrong. You are officially retarded.<br /><br />' . mysql_error(); 
       $sql = "ROLLBACK;"; 
       $result = mysql_query($sql);           
       } 
       else 
       {                   
       $sql = "COMMIT;";              
       $result = mysql_query($sql);           
     ?>  

      <div class="box">                
      <h1 class="green">That's it!</h1>          
      <p>Let's do some more novice php scripting.</p> 

      </div> 

     <?php 
     } 
    } 
?> 

这是我的连接文件:

<?php 
    $server = "servername"; 
    $userName = "username"; 
    $password = "password"; 
    $db = "db";  

    $con = mysql_connect($server,$userName,$password,$db); 

    if (mysqli_connect_errno($con)) 
    { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

?> 
+3

你正在使用'mysql_connect',然后'mysqli_connect_errno' - 你不能将mysql_ *与mysqli_ *混合使用 – andrewsi 2013-04-08 19:42:55

+6

[**请勿使用'mysql_ *'在新代码**中的函数](http://bit.ly/phpmsql)。它们不再被维护[并且被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。 [**红框**](http://j.mp/Te9zIL)?了解[*准备语句*](http://j.mp/T9hLWi),并使用[PDO](http:///php.net/pdo)或[MySQLi](http://php.net/mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助您决定哪些。如果您选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ) – DCoder 2013-04-08 19:43:17

+3

添加error_reporting(E_ALL);和ini_set(“display_errors”,true);右下方的<?php并刷新 – 2013-04-08 19:43:42

回答

2

你有不好的报价,或者至少坏串联在你的字符串...

$query = "INSERT INTO yada yada 
      VALUES ('. $value0 .', 
        ^--- 

你已经开始了一个双引用的字符串,所以变量不需要“连接”到字符串中。例如$x = "hello $there how are you"将正常工作。因此,无论切换到双引号贯穿:

VALUES ('" . $value0 . "' ... 
      ^--   ^-- 

或简单地消除在串联的尝试:

VALUES('$value0', .... 
0

变化的代码块

$query = "INSERT INTO db.my_table(value0, value1, value2, value3, value4, value5, value6, value7) 
      VALUES ('. $value0 .',           
        '. $value1 .',          
        '. $value2 .',          
        '. $value3 .', 
        '. $value4 .',           
        '. $value5 .',           
        'enum-value', 
        '. $value7 .');"; 

这一个

$query = "INSERT INTO db.my_table(value0, value1, value2, value3, value4, value5, value6, value7) 
      VALUES ('. $value0 .',           
        '. $value1 .',          
        '. $value2 .',          
        '. $value3 .', 
        '. $value4 .',           
        '. $value5 .',           
        'enum-value', 
        '. $value7 .')"; 
+0

这仍然行不通。 – 2013-04-08 19:46:56

+0

谢谢大家,我已经意识到我有一些关于PHP版本和新事物的新方法。感谢您的快速回复! – Majoren 2013-04-08 19:52:42

0
$query = "INSERT INTO db.my_table(value0, value1, value2, value3, value4, value5, value6, value7) 
       VALUES ('". $value0 ."',           
         '". $value1 ."',          
         '". $value2 ."',          
         '". $value3 ."', 
         '". $value4 ."',           
         '". $value5 ."',           
         'enum-value', 
         '". $value7 ."')"; 

引号在查询中做错了。往上看。你应该使用“..”来进入变量领域,而不是'。 - 因为你的字符串开始使用“。