2014-01-07 50 views
1

我是新來的PHP,這是我的第一個腳本:錯誤張貼到MySQL

function tinyf_users_add($name,$password,$email,$isadmin) 
    { 
     global $tf_handle; 
     // define area 
     $name = trim($name); 
     $password = trim($password); 
     $email = trim($email); 
     $isadmin = trim($isadmin); 
     $n_email= mysql_real_escape_string (strip_tags($email),$tf_handle); 
     $n_pass = md5($password); 
     $n_name = mysql_real_escape_string (strip_tags($name),$tf_handle); 
     $n_iseadmin = abs(intval($isadmin)); 

     // check if not empty data 
     if ((empty($name)) || (empty($password)) || (empty($email)) || (empty ($isadmin))) 
      return false; 
     else if (!filter_var($n_email,FILTER_VALIDATE_EMAIL)) // check if valid email 
      return false; 
     else{ 
      $query = sprintf("INSERT INTO `users` (NULL, '%S', '%s', '%s', '%d')",$n_name,$n_pass,$n_email,$n_iseadmin); 
      $qresult = mysql_query($query); 
      if (!$qresult){ 
       return false; 
      } 
     else{ 
       return true; 
      } 
     } 
    } 

這是附加功能,但是當我使用的功能,例如

tinyf_users_add('yanal','ss','[email protected]',0); 

它不工作不工作

DB連接代碼

<?php 
    $tf_host = 'localhost'; 
    $tf_dbname = 'tinyforum'; 
    $tf_username = 'root'; 
    $tf_password = 'root'; 
    $tf_handle = @mysql_connect($tf_host,$tf_username,$tf_password); 
    if (!$tf_handle) 
    die('conn filad '); 
    $tf_db_result = mysql_select_db($tf_dbname); 
    if (!$tf_db_result){ 
    die ('filed'); 
    } 
    @mysql_query("SET NAMES 'utf8'"); 
    function tinyf_db_close() 
    { 
    global $tf_handle; 
    @mysql_close($tf_handle); 
    } 
?> 
+2

首先從消除所有的'@'你的代碼,然後告訴我們你得到了什麼錯誤。 –

+0

嘗試從你的函數返回$查詢,並執行echo $查詢以查看是否有效 – Hackerman

+0

sprintf中的錯字,將%S替換爲%s – sdespont

回答

2

在你插入查詢你已經忘了Values條款補充說:

$query = sprintf("INSERT INTO `users` VALUES (NULL, '%S', '%s', '%s', '%d')",$n_name,$n_pass,$n_email,$n_iseadmin); 
            ^^^ add here 

注:請不要使用mysql_ *因爲已經棄用。

+0

抱歉,但也不工作:( –

+0

@YanalShmilan什麼不工作,請指定 –

+0

我打電話添加用戶tinyf_users_add('yanal','ss','ss @ ss.ss',0); 但是沒有任何關於mysql的信息 –

0

您的SQL查詢錯誤。你需要的值之前指定字段:

試試這個:

$query = sprintf("INSERT INTO `users` (`field1`,`field2`,`field3`,`field4`,`field5`) VALUES (NULL, '%S', '%s', '%s', '%d')",$n_name,$n_pass,$n_email,$n_iseadmin); 
+0

你不需要***,但它會幫助W ith列計數錯誤後來;) –

+0

是的,假設你想使用自動增量ID字段...你真的有點做..大聲笑 –

+0

沒有。如果您使用的是自動增量字段,則可以將NULL作爲值,並且它仍然會自動遞增。 –

0

你可以試試這個,你已經錯過了在查詢添加values

$query = sprintf("INSERT INTO `users` (`name`,`password`,`email`,`isadmin`) values ('%s', '%s', '%s', '%d')", 
       $n_name, 
       $n_pass, 
       $n_email, 
       $n_iseadmin); 
$qresult = mysql_query($query, $tf_handle) or die(mysql_error()); 
+0

對不起,但也沒有工作:( –

+0

你可以發佈你的表結構 –

+0

id int,名稱文本,密碼文本,電子郵件的文本,isadmin int –