iT邦幫忙

1

PHP 在mysql裡面的 select * from user where username="$username"

  • 分享至 

  • xImage

各位前輩
if($_SERVER["REQUEST_METHOD"]=="POST"){
$username = $_POST['name'];
$password = $_POST['password'];
$email = $_POST['email'];
$passwordcheck = $_POST['passwordcheck'];
$checkk =mysqli_query($link,"select username from ud where username='$username'");

小弟在最後那邊的$username 傳不進去前面$username =$_POST['name']的username
如果單純只是一般
$checkk =mysqli_query($link,"select username from ud where username='jack'");
都正常 都可以抓得到

是我在 select ......username = ' ' 裡面的語法錯了嗎?
感謝

如果你是直接複製 code 貼上來的話
目前看來 你在 query 內的 $username 的 "$" 變成全行了
你直接複製上方的 $username 貼上或者重打一次 "$username" 試試看
wiseguy iT邦超人 1 級 ‧ 2022-10-20 10:49:11 檢舉
這年頭還是有人把 POST/GET 變數用字串串接、代換方式直接塞進 SQL 裡 ..... 真的很勇敢
Wozski iT邦新手 5 級 ‧ 2022-10-20 15:36:09 檢舉
請問樓上的大大,會這樣說的原因是因為 SQL injection 的資安風險嗎?感謝!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

5
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2022-10-19 18:27:37
最佳解答

就目前看來,你最後那個$字號是全型字。
這導致你的那一段程式碼,並不會因為雙引號魔術變數做處理。
畢竟那不是$字號

這邊可以多教你一招。在雙引號使用魔術變數時。
可以用花括號{}來將變數包起來。

"select username from ud where username='{$username}'"

這樣可以確保你的確要讓其變數運行。

另外善用好一點的編輯器。它會在編寫就接提示給你了。

我要發表回答

立即登入回答