无法使用PHP连接到MySql数据库

时间:2017-02-28 13:20:47

标签: php mysql

我为我的网站创建了一个登录屏幕,但我似乎无法通过PHP访问我的MySql数据库。我正在使用XAMPP 1.7.7。,Codelobster PHP Edition和MySql Workbench。我知道这是一个非常老版本的XAMPP,但我必须使用它,因为在学校这个版本安装在每台PC上。 所以我编写了PHP文件,它建立了与数据库的连接(称为metaler)和另一个PHP文件,它通过POST方法获取登录屏幕上输入字段的值,我想要做的就是将这些值插入其中一个我的表(称为user_data)。没有为数据库设置密码。

以下是代码:

<?php
$connect = mysql_connect("localhost", "root", "")

or exit("Nem sikerült kapcsolódni a szerverhez.");

mysql_select_db("metaler",$connect)

or exit("Nem sikerült megnyitni az adatbázist.");

mysql_query("SET NAMES 'utf8'");
?>

以上是PHP的连接。

<?php
include("connecttodb.php");

$ema=$_POST['ema'];
$pass=$_POST['pass'];

$insert=("INSERT INTO metaler.user_data (email, password)
VALUES ($ema, $pass)");

$result=mysql_query($insert);

if($result){
print "Sikeres bejelentkezés!";
}
else{
print "Nem sikerült kapcsolódni.";
}

mysql_close($connect);
?>

这是应该执行INSERT命令的那个,但它只是显示错误消息“Nemsikerültkapcsolódni”。这是在ELSE子句中所以错误必须在第二个。 由于没有给出其他错误消息,我还没有找到答案。如果你看看我的代码,你会发现我是一个初学者,也许答案很明显,但我需要一些帮助。 如果您有任何建议,一切都非常受欢迎。 先感谢您!

4 个答案:

答案 0 :(得分:4)

首先,停止使用已弃用的mysql扩展程序,改为使用mysqli。然后,您需要注意sql注入,使用预处理语句,例如:

<?php
$con = mysqli_connect("localhost","your_username","your_passwird","your_db");

// Check connection
if (mysqli_connect_errno()){
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    die();
}
?>

<?php
include("connecttodb.php");

$ema=$_POST['ema'];
$pass=$_POST['pass'];

$insert = ("INSERT INTO metaler.user_data (email, password)
VALUES (?, ?)");

$stmt = $con->prepare($insert);

if($stmt){

    $stmt->bind_param('ss',$ema,$pass);

    if($stmt->execute){
        print "Sikeres bejelentkezés!";
    } else{
        echo mysqli_error($con);
    }
}
$stmt->close;
mysqli_close($con);
?>

答案 1 :(得分:2)

暂且不使用已弃用的函数并出现SQL注入问题......

在varchar字符串中使用引号怎么样?

WITH
 dates
 AS
 (SELECT 
   TO_DATE('10-02-2017', 'DD-MM-YYYY') + (rownum - 1)
  FROM
   all_tables
  WHERE 1=1 
  AND rownum < (TO_DATE('20-02-2017', 'DD-MM-YYYY') - TO_DATE('10-02-2017', 'DD-MM-YYYY')) + 2
 )
SELECT 
 *
FROM
 dates

答案 2 :(得分:0)

尝试使用

调试代码
echo mysql_errno($connect) . ": " . mysql_error($connect). "\n";

在mysql_query之后或在IF子句中检查查询结果。

我还建议您不要使用此代码,而是继续使用新版本的mysqli http://php.net/manual/en/book.mysqli.php

答案 3 :(得分:0)

你可以通过像这样使用var_dump看到确切的错误:

$insert=("INSERT INTO metaler.user_data (email, password)
VALUES ($ema, $pass)");
 var_dump($insert);
 or
$result=mysql_query($insert);
var_dump($res);

并使用以下行获取mysql错误:

if($result){
 print "Sikeres bejelentkezés!";
  }
 else{
 print "error".mysql_error() ;//it will give exact error message
 }