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