2013-04-08 74 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 ."')"; 

引號在查詢中做錯了。往上看。你應該使用「..」來進入變量領域,而不是'。 - 因爲你的字符串開始使用「。