错误:未选择数据库需要解决方案

时间:2015-02-19 23:49:20

标签: php mysql

这是我的代码我有点新的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());
      }
    }
    }
    ?>

3 个答案:

答案 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 statementsPDO 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());