我写了一个简单的php函数,试图在php中学习php和函数。
该功能的目标是将新用户上传到数据库
这是我的功能
function upload_user($pId, $pName, $pEmail, $pPhone ){
$sql = "INSERT INTO users (member_id, name, email, phone) VALUES ('$pId', '$pName', '$pEmail', '$pPhone')";
mysql_query($sql);
}
这是我的表格
<form name="register" method="post">
<input type="text" value="name" name="name">
<input type="text" value="email" name="email">
<input type="text" value="phone" name="phone">
<input type="submit" name="submit" value="register" />
</form>
if(isset($_POST['submit'])){
$id = rand(100, 10000);
$name = $_POST['name'];
$email= $_POST['email'];
$phone = $_POST['phone'];
upload_user($id,$name,$email,$phone);
}
我知道我已成功连接到数据库,因为我做了一个测试,以便在连接成功与否时回显。我也在ini_set('error_reporting', E_ALL);
上启用了php错误,但它没有给我任何警告或错误
我的问题
上述功能没有任何结果,即结果只是空白。如果有人能够向我指出我做错了什么,那将非常感激。
答案 0 :(得分:1)
我认为该函数很可能不知道数据库连接,因此您需要将db连接对象作为参数传递给函数,或者在函数内部使用global
标识符。
function upload_user($dbconn, $pId, $pName, $pEmail, $pPhone ){
$sql = "INSERT INTO `users` (`member_id`, `name`, `email`, `phone`) VALUES ('$pId', '$pName', '$pEmail', '$pPhone')";
mysql_query($sql,$dbconn);
}
function upload_user($pId, $pName, $pEmail, $pPhone ){
global $dbconn;
$sql = "INSERT INTO `users` (`member_id`, `name`, `email`, `phone`) VALUES ('$pId', '$pName', '$pEmail', '$pPhone')";
mysql_query($sql,$dbconn);
}
这些都不会返回一个值 - 你从函数返回的内容取决于你,如果你确实想要返回一个值。您可以使用查询的响应(true或false)作为返回:
function upload_user($pId, $pName, $pEmail, $pPhone ){
global $dbconn;
$sql = "INSERT INTO `users` (`member_id`, `name`, `email`, `phone`) VALUES ('$pId', '$pName', '$pEmail', '$pPhone')";
return mysql_query($sql,$dbconn);
}
if(isset($_POST['submit'])){
$id = rand(100, 10000);
$name = $_POST['name'];
$email= $_POST['email'];
$phone = $_POST['phone'];
/* using ternary notation to echo something based on return value of function */
echo upload_user($id,$name,$email,$phone) ? 'Success' : 'Sorry, it failed';
}
你应该知道,mysql和其他rdbms中的某些单词具有特殊的意义 - 所以最好总是(imo)在反引号中包含字段名称。另外值得注意的是,mysql_*
函数套件已被弃用,建议使用mysqli
或pdo
〜以及您在代码中使用用户提供的内容的位置(表单提交数据一般或者查询字符串)你应该使用预备语句来防止sql注入。
答案 1 :(得分:0)
mysql接受 link_identifier
link_identifier:MySQL连接。如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个,就好像没有参数调用mysql_connect()一样。如果未找到或建立连接,则会生成E_WARNING级别错误。reference
因此,您应该传递连接参数,如其他答案中所述。建立连接后,您应该关闭连接,以免遇到 too manny connections
服务器错误。