所以我有一個SQL數據庫有一個帳戶和信息表,另一個用於存儲對文章的評論。我有一個提交評論的表單,它工作的很好,但我想實現一個功能來防止垃圾郵件和非註冊帳戶。我試圖找到一種方法來使下面的代碼工作,以便它會調用我的帳戶表並檢查username
部分是否與表單中輸入的內容匹配。如何使用SQL數據庫驗證表單?
我希望它通過我的username
列檢查表,看看在框中輸入的內容是否在數據庫中,如果它沒有被註冊,它將不會提交。
我的問題我一直運行到的是,我試試這個
<?
if ($_POST['Uname']==`username`){
$strSQL="INSERT INTO `comments`
(`name`,`comment`,`date`,`#`) VALUES
('".$_POST['Uname']."','".$_POST['Comment']."',
'".$_POST['Date']."','".$_POST['#']."')";
}
else{
echo "Username invalid";
}
}
?>
但我做到這一點,當它認爲「用戶名」,也就是用戶名必須以正確提交。
我不希望每個用戶名都需要是「用戶名」才能提交,我只是希望它通過我的username
列檢查是否輸入了SQL列中的一個註冊用戶名。
林不知道這是可能的,或者如果我有任何意義,但這是我在這個網站上的第一篇文章,我將不勝感激任何幫助,我可以得到。
全部代碼如下
<?
if ($_POST['Enter']=='Enter'){
$con = mysql_connect
("sql***.*******.com","*****","*******");
$db_selected = mysql_select_db("*********",$con); //My login
$test2=$_GET['ID']; //Ignore
$_POST['#']=$test2; //Ignore
$sql="Select * from `Articles` and `Accounts`"; //For pulling data
mysql_query($strSQL,$con);
if (? == ?){ //What should go here?
$strSQL="INSERT INTO `comments`
(`name`,`comment`,`date`,`#`) VALUES
('".$_POST['Uname']."','".$_POST['Comment']."',
'".$_POST['Date']."','".$_POST['#']."')";
}
else{
echo "Username invalid";
}
}
?>
編輯
所以使得所需的更改後,應我以前的代碼最終會這樣? ?
<?
if ($_POST['Enter']=='Enter'){
$con = mysql_connect
("*******","********","*****");
$db_selected = mysql_select_db("*****",$con);
$test2=$_GET['ID'];
$_POST['#']=$test2;
$username = $_POST['Uname'];
$sql = "Select `id` from `Accounts` where `username` = $username";
mysqli_num_rows($sql,$result);
$row_cnt = mysqli_num_rows($result);
printf("Result set has %d rows.\n", $row_cnt);
echo $result;
if ($row_cnt!=''){
$strSQL="INSERT INTO `comments`
(`name`,`comment`,`date`,`#`) VALUES ('".$_POST['Uname']."',
'".$_POST['Comment']."',
'".$_POST['Date']."',
'".$_POST['#']."')";
}
else{
echo "Username invalid";
}
}
>
你在這裏混合不同的mysql apis,你不能那樣做。 –
你在這個if($ _POST ['Uname'] =='username')中有'''',這也失敗了,你的'$ username'也失敗了。這個錯誤太多了。 –
*「所以在做出所需的更改之後,我以前的代碼是否應該像這樣?」 - 不,我強烈建議您訪問php.net網站,查看這些mysql函數並堅持語法。 –