簡體   English   中英

通過html表單和php腳本所需的SQL數據庫幫助

[英]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'" ;

問題出在查詢中,當您要檢查多個值時ANDWHERE子句中使用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'AND password ='$ password'AND email_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.

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