我为我的网站创建了一个登录屏幕,但我似乎无法通过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子句中所以错误必须在第二个。 由于没有给出其他错误消息,我还没有找到答案。如果你看看我的代码,你会发现我是一个初学者,也许答案很明显,但我需要一些帮助。 如果您有任何建议,一切都非常受欢迎。 先感谢您!
答案 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
}