簡體   English   中英

PHP 參數錯誤

[英]PHP Wrong Parameters

我正在嘗試創建一個注冊頁面,但 PHP 告訴我我有錯誤的參數,這沒有意義,除非我需要為自動增量主 ID 鍵添加參數。

這是我的 SQL 查詢調用:

mysql_query("INSERT INTO Users (username, password, fname, lname, email) VALUES ('%s', '%s', '%s', '%s, '%s')",
        mysql_real_escape_string($username),
        mysql_real_escape_string($password),
        mysql_real_escape_string($first),
        mysql_real_escape_string($last),
        mysql_real_escape_string($email)) or die(mysql_error());

它在此代碼塊的最后一行給了我錯誤的參數計數。 有任何想法嗎? 我直接從我的數據庫中復制並粘貼了行名。

我的表如下:

id - int(11) - auto-incrementing
username - varchar(20)
password - varchar(20)
fname - varchar(35) 
lname - varchar(35)
email - varchar(254)

您已將 SQL 查詢格式化為sprintf()調用,但不要調用sprintf()

mysql_query(sprintf("INSERT INTO Users (username, password, fname, lname, email) VALUES ('%s', '%s', '%s', '%s', '%s')",
            mysql_real_escape_string($username),
            mysql_real_escape_string($password),
            mysql_real_escape_string($first),
            mysql_real_escape_string($last),
            mysql_real_escape_string($email))) or die(mysql_error());
  // also note some parentheses out of place ^^^^^^^^^^^^^^^^^^^^^^^^

告訴你參數的是 PHP,而不是 MySQL。

您已嘗試使用mysql_query之類的sprintf ,但事實並非如此。 mysql_query接受可選的數據庫資源標識符和查詢字符串。 兩個參數。 就這些。

如果您確實想使用sprintf ,那么 go :

mysql_query(
   sprintf(
      "INSERT INTO Users (username, password, fname, lname, email) VALUES ('%s', '%s', '%s', '%s, '%s')",
      mysql_real_escape_string($username),
      mysql_real_escape_string($password),
      mysql_real_escape_string($first),
      mysql_real_escape_string($last),
      mysql_real_escape_string($email)
   )
) or die(mysql_error());

但請記住, mysql_query的第一個參數只是一個字符串。 沒有魔法。

mysql_query(
    sprintf("INSERT INTO Users (username, password, fname, lname, email) VALUES ('%s', '%s', '%s', '%s, '%s')",
    mysql_real_escape_string($username),
    mysql_real_escape_string($password),
    mysql_real_escape_string($first),
    mysql_real_escape_string($last),
    mysql_real_escape_string($email)))

or die(mysql_error()); // sprintf to build a final string of your query by given format and "or die statement" is outside the mysql_query function call.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM