【发布时间】:2012-09-26 14:34:08
【问题描述】:
我正在尝试创建一个小表单,供人们访问我的网站并简单地输入以下信息:
- 姓名
- 姓氏
- 电子邮件地址
它应该将此信息从我的数据库发送回我的表中。
现在事情变得“复杂”了(……嗯,对我来说,好吗?)
如果我们的表中确实存在电子邮件地址,则它必须回显“已添加电子邮件地址。谢谢!”。否则,如果它不存在,那么它必须回显“电子邮件地址已经存在!”
由于某种原因,它没有这样做。它吐出这个错误:
Fatal error: Call to a member function fetch_assoc() on a non-object in C:\wamp\www\addemail.php on line 46
我附上了我的 php 代码(如下):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<head>
<script LANGUAGE="JavaScript">
<!--
function redirect () { setTimeout("go_now()",3000); }
function go_now () { window.location.href = "newsletter_frame.html"; }
//-->
</script>
<!-- This is the link to the external CSS file-->
<link rel="stylesheet" type="text/css" href="css/mystyle.css">
<!-- This is the link to the external Javascript file-->
<script type="text/javascript" src="js/myjs.js"></script>
<title>Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="verify-v1" content="gDSxHR1Tk8vWtty9GoRHABGFEH+Bh2VHYCHv0Cx1/Ek=">
<meta name="copyright" content="Burger man">
<meta name="keywords" content="afro, afrodeep, soulful, funky, deep, vocal house, broken beats, disco">
<meta name="description" content="Burgers and chips">
<meta name="page-type" content="Information">
</head>
<body onLoad="redirect()" id="iframe_newsl_spec">
<?php
$dbc = mysqli_connect('localhost', 'root', '', 'si_store') or die('Error connecting to MySQL server.');
if ( isset($_POST['email_address']) && isset($_POST['firstname']) && isset($_POST['surname']) )
{
$email_address = $_POST['email_address'];
$firstname = $_POST['firstname'];
$surname = $_POST['surname'];
$query = mysqli_query("SELECT * FROM email_list WHERE email_address = '$email_address'");
if ( mysql_num_rows($query) > 0)
{
echo 'Email address already exists!';
}
else
{
mysqli_query("INSERT INTO email_list(email_address, firstname, surname) VALUES ('$email_address','$firstname','$surname')");
echo 'Email Address Added. Thank you!';
}
}
//mysqli_query($dbc, $query) or die ('Error connecting to database.');
mysqli_close($dbc);
?>
</body>
</html>
【问题讨论】:
-
你在做什么?
mysql_*或mysqli_*?选择一个 -
我不知道我在看什么。你有一个不兼容的 mysql_() 和 mysqli_() 组合,并且在任何地方都没有调用 mysqli::fetch_assoc()。
-
尝试将 mysql_num_rows 更改为 mysqli_num_rows
-
小提示:你使用 mysqli 而不是 mysql 的原因(你没有这样做)是准备好的声明:php.net/manual/en/mysqli.prepare.php
-
是的,
mysqli_*是理智的第一步,但如果没有准备好的陈述,Bobby Tables 仍然会有很多乐趣
标签: php html mysql phpmyadmin