将表单数据与数据库进行比较并执行操作

时间:2014-09-19 12:48:47

标签: php html sql oracle

我有一个网站,用户必须已经存在于数据库中才能进入下一页。我做了一个查询,检查他们的名字,姓氏和电子邮件地址与存储在数据库中的那些,我可以让它打印结果,如果他们匹配,但我不能让它返回一个真或我可以使用的东西来执行一个动作。我需要向用户发送一封电子邮件,然后将其重定向到另一个页面,你能帮忙解决这个问题吗?

这是我的代码

<?php

include("dbconnect.php");

$firstname=$_POST["firstname"];
$lastname=$_POST["lastname"];
$email=$_POST["email"];

$connect = $conn; 
if (!$connect) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Prepare the statement
$stid = oci_parse($connect, "SELECT * FROM USERS WHERE firstname = '$firstname' AND lastname = '$lastname' AND email = '$email'");

if (!$stid) {
    $e = oci_error($connect);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Perform the logic of the query
$r = oci_execute($stid);
if (!$r) {
    $e = oci_error($stid);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Fetch the results of the query
print "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    print "<tr>\n";
    foreach ($row as $item) {
        print "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    print "</tr>\n";
}
print "</table>\n";

oci_free_statement($stid);
oci_close($connect);

?>

如果你可以帮我运行一个动作,如果是真的(发送电子邮件和重定向),如果用户不在数据库中则显示错误。谢谢 - 我是PHP的新手

1 个答案:

答案 0 :(得分:1)

您可以使用多种解决方案解决问题。 我会给你两个建议。 第一个是使用SQL select来计算已执行查询的返回行。 试试这个:

SELECT * FROM YOUR_TABLE WHERE SURNAME LI''surname%'AND NAME LIKE'%name%'AND EMAIL like'%email%'

执行此操作并在执行命令后插入: 回声oci_num_rows($ STID)。 “拥有这些数据的人。
\ n”;

如果为1,则表示您的数据库中有此数据。

您也可以使用JavaScript。如果你想我也可以解释一下。 编辑:在这里你用纯javascript:

A short example of comparasion in JS
http://jsfiddle.net/marcusrommel/tcm4ak1p/