繁体   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