[英]SQL database help needed via html form and php scripts
<?php
include ("account.php") ;
( $dbh = mysql_connect ( $hostname, $username, $password ) )
or die ( "Unable to connect to MySQL database" );
print "Connected to MySQL<br>";
mysql_select_db($project);
$number = NULL ;
$username = $_POST["username"];
$priority = $_POST["priority"];
$category = $_POST["category"];
$incident_description = $_POST["incident_description"];
$sql = "insert into incident values ( NULL, '$username','$priority','$category','$incident_description',curdate(),curtime() )" ;
mysql_query ( $sql ) or print ( mysql_error ( ) );
$credentials = "select * from Credentials where ("username" = '$username' ,"password" = '$password' , "email_address" = 'email_address')" ;
print $credentials;
$result = mysql_query ($credentials) or print (mysql_error ( ) );
$howManyRows = mysql_num_rows ( $result);
//if $howManyRows is positive continue process to update database with sql,if not,die.
?>
另一個文件上有一個表單的html代碼,因此$ _POST,但是我認為沒有必要在此處顯示它,因為我需要此php文件的正確語法。
對於$credentials
的部分,我需要如何將html表單(username,password,email_address)
中的值與數據庫中"Credentials"
表中的值進行比較的幫助嗎?我需要這樣做才能授權這些值進行該過程。 我到達的語法目前不正確,因為它無法正確執行。 我只是不知道如何比較兩者。 這整個過程一直進行到mysql_query ( $sql ) or print ( mysql_error ( ) )
行。
建議會很好。對於冗長的問題,我表示歉意!
PS:憑據表的列也包括username,password,email_address
!
問題在這里
$credentials = "select * from Credentials where ("username" = '$username' ,"password" = '$password' , "email_address" = 'email_address')" ;
改成
$credentials = "select * from Credentials where `username` = '$username' and `password` = '$password' and `email_address` = 'email_address'" ;
問題出在查詢中,當您要檢查多個值時AND
在WHERE
子句中使用AND
。
我不知道,但您不應該使用以下內容...
$sql = "INSERT INTO incident (fieldname, fieldname) VALUES ('".mysql_real_escape($_POST['fieldname'])."', '".mysql_real_escape($_POST['fieldname'])."')";
要向mysql中插入任何內容?
嘗試
$ password = mysql_real_escape($ _ POST ['password']); //避免使用SQL指令
$ username = mysql_real_escape($ _ POST ['username']);$ credentials =“從憑據中選擇*,其中
username
='$ username'ANDpassword
='$ password'ANDemail_address
='email_address'”;
您可以按以下方式使用憑證查詢
$credentials = "select * from Credentials where username = '$username' AND password = '$password' AND email_address = 'email_address'" ;
但是為了獲得更好的性能並防止您的代碼進行mysql注入,您必須執行以下操作
1)使用Mysqli代替mysql函數。 這是mysqli作為包裝器的好庫https://github.com/nWidart/PHP-MySQLi-Database-Class
2)始終將數據庫連接字符串保存在單獨的文件中,並放在安全的地方。 然后,將您的連接文件包含到您的需求項目文件中。
3)在直接用於查詢之前,請始終驗證變量的值並使用mysql_real_escape。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.