[英]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.