2014-02-15 50 views
0

美好的一天,每個人,並感謝您想要幫助我。 我在這裏有一個非常簡單的INSERT INTO table() VALUE()聲明,但由於某種原因,它似乎不起作用。 我知道很多人已經問過這樣的問題,但是關於我自己的問題困擾我的是mysqli_error()字符串是空的,並沒有給我任何關於什麼可能是錯誤的暗示。

下面的代碼:

 <?php 
     $connection = mysql_connect("database","username","password"); 

     // Check connection 
     if (!$connection) 
     { 
      echo "Connection failed: " . mysql_connect_error(); 
     } 
     else 
     { 
      echo "Inserting..."; 

      $sql="INSERT INTO test1 (StudentID) 
      VALUES('$_POST[StudentID]')"; 
      echo "Insert complete!"; 
     } 

      if (mysql_query($connection,$sql)) 
      { 
       echo "1 record added"; 
      } 
      else 
      { 
       echo "Error: " . mysqli_error($connection);     
      } 
     mysqli_close($connection); 
    ?> 

所有我得到的輸出是:

Inserting...Insert complete!Error: 

我用這麼簡單的東西浪費你的時間很抱歉,但...這是我第一次工作與數據庫,我失去了什麼錯誤可能(可能是某處的語法錯誤?找不到它自己)

+5

[請,不要在新代碼中使用'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)。 **您也可以[SQL注入](http://stackoverflow.com/q/60174)** –

+0

除了您的實際問題:您的腳本容易受到SQL注入;你應該閱讀[如何在PHP中防止它們](http://stackoverflow.com/q/60174/53114)。 – Gumbo

+2

你正在混合'mysqli_ *'和'mysql_ *'函數。 –

回答

1

你有很多錯誤

// Open connection 
$cn = mysql_connect("database","username","password") or die('Connection failed: ' . mysql_error()); 

// Check if param is set 
if(!isset($_POST['StudentID'])) 
    die('Param error'); 

echo "Inserting..."; 

// Query with escaped special char 
$SQL = sprintf("INSERT INTO test1 (StudentID) VALUES('%s')", 
     mysql_real_escape_string($_POST['StudentID'], $cn) 
); 

// Execute query 
$Result = mysql_query($SQL, $cn) or die(mysql_error($cn)); 

// Check if record inserted 
if(mysql_affected_rows($cn) > 0) 
    echo "Insert complete!"; 
else 
    echo "Insert FAIL!"; 

// Close connection 
mysql_close($cn); 

NB使用PDO或mysqli_的,mysql_不贊成

+0

旁註:您仍在混合這兩個函數。注意你的最後一行代碼? ;-) –

+0

哎呀! PS。你跟着我嗎(http://goo.gl/AEMWsL)? :D –

+0

恩......你是什麼意思「我跟着你」? –

0

正如在註釋中所述不要使用mysql * funtcions而是mysqli *函數a第二,你使用的是他們simultaenously什麼不能很好地從任何標準

併爲你的錯誤不要把它寫這樣

$sql="INSERT INTO test1 (StudentID) VALUES('$_POST[StudentID]')"; 

Definre您的帖子變量,然後嘗試將它傳遞給數據庫

像這樣

$student = $_POST[StudentID]; 
$sql="INSERT INTO test1 (StudentID) VALUES($student)"; 

BR的

+0

使用'mysql_ *'更好,而不是轉義字符串xD – vikingmaster

0

mysql_connect功能應該有主機名e.g mysql_connect(HOST,USER,PASS)

看到文檔http://bd1.php.net/function.mysql-connect
你也混mysql_*mysqli_*。您應該使用mysqli_*,因爲mysql_*函數已被棄用。

您還需要首先檢查$_POST['StudentID']

echo "Inserting..."; 
    if(isset($_POST['StudentID'])) { 

    $sql="INSERT INTO test1 (StudentID) 
    VALUES('$_POST[StudentID]')"; 
    echo "Insert complete!"; 
    } 
    else { 
    echo "no id found!"; 
    } 
0

請參考下面的代碼

<?php 
    $connection = mysql_connect("host","username","password"); 

    // Check connection 
    if (!$connection) 
    { 
     echo "Connection failed: " . mysql_connect_error(); 
    } 
    else 
    { 
    mysql_select_db("DB",$connection); 
     echo "Inserting..."; 

     $sql="INSERT INTO test1 (StudentID) 
     VALUES('$_POST[StudentID]')"; 
     echo "Insert complete!"; 
    } 

     if (mysql_query($connection,$sql)) 
     { 
      echo "1 record added"; 
     } 
     else 
     { 
      echo "Error: " . mysql_error($connection);     
     } 

    mysql_close($connection); 

?>