这是我的代码我有点新的PHP我不知道为什么我会遇到这个问题。
因为我已经检查过该数据库已经连接。
请让我知道我做错了什么,我们将不胜感激。
谢谢你的进步。
mysql.php的代码:
<?php
$db_name = "users";
$link = mysqli_connect("localhost","root","mysql");
mysqli_select_db($link,$db_name) or die("cannot connect to the database" . mysqli_error());
?>
check_user.php的代码:
<?php
include "include/mysql.php";
if (isset($_POST['submited'])) {
$user_type = 1;
$first_name = $_POST['fname'];
$last_name = $_POST['lname'];
$user_name = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$profile_image = $_FILES['profile_image'];
$gender = $_POST['gender'];
$qualification = $_POST['qualification'];
$short_discription = $_POST['qualification'];
$check="SELECT * FROM user_information WHERE email = '".$email."'";
$rs = mysqli_query($link,$check);
$data = mysqli_fetch_array($rs, MYSQLI_NUM);
if($data[0] > 1) {
echo "User Already in Exists<br/>";
}
else
{
$insert="INSERT INTO user_information (user_type, first_name, last_name, user_name, password, profile_image, gender, qualifications, comment, email)VALUES ('.$first_name.','.$last_name.','.$user_name.','.$email.','.$password.','.$profile_image.','.$gender.','.$qualification.','.$short_discription.')";
if (!mysql_query($insert))
{
die('Error: ' . mysql_error());
}
}
}
?>
答案 0 :(得分:1)
您的值正在使用不正确的连接。
('.$first_name.','.$last_name.','.$user_name.','.$email.','.$password.','.$profile_image.','.$gender.','.$qualification.','.$short_discription.')
必须使用'".$variable."'
而不是'.$variable.'
('".$first_name."','".$last_name."','".$user_name."','".$email."','".$password."','".$profile_image."','".$gender."','".$qualification."','".$short_discription."')
然后这个代码块:
if (!mysql_query($insert))
{
die('Error: ' . mysql_error());
}
您不能将mysql_
函数与mysqli_
混合,这些不同的MySQL API不会相互混合。
使用:
if (!mysqli_query($link,$insert))
{
die('Error: ' . mysqli_error($link));
}
在您的数据库连接中,mysqli_error()
需要传递一个参数。
mysqli_error($link)
根据手册http://php.net/manual/en/mysqli.error.php
string mysqli_error ( mysqli $link )
此外,您的代码基于此条件语句
if (isset($_POST['submited'])){...}
确保您的表单是POST方法,并且所有表单都包含名称属性。
我注意到你也在使用$_FILES
。确保你有正确的enctype。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。
我还注意到您可能以纯文本格式存储密码。如果是这种情况,则非常气馁。
我建议您使用CRYPT_BLOWFISH或PHP 5.5的password_hash()
功能。对于PHP&lt; 5.5使用password_hash() compatibility pack
。
另外,关于SQL注入,use mysqli
with prepared statements或PDO with prepared statements,,它们更安全。
现在,您的问题标题显示为错误:未选择数据库
国:
$link = mysqli_connect("myhost","myuser","mypassw","mybd")
or die("Error " . mysqli_error($link));
所以,遵循这个惯例。
确保您的数据库“用户”确实存在并且不是表,而是数据库。
答案 1 :(得分:-1)
虽然可以使此代码生效,但查询中没有安全性,并且可以通过传递'; DELETE FROM <someTable>;
查询轻松地对代码执行SQL注入。为此使用准备好的语句会更好,以便您的查询被正确清理。请查看http://php.net/manual/en/mysqli.quickstart.prepared-statements.php。
答案 2 :(得分:-1)
试
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password') or die('Error: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db('my_database') or die('Error');
$query = 'SELECT * FROM my_table';
$result = mysql_query($query) or die('Error: ' . mysql_error());