php mysql服务器消失了

时间:2014-05-16 13:09:18

标签: php mysql mysqli

我遇到了正在开发的脚本的问题。我在Windows XAMPP上测试它,我有一个数据库和一个表,我试图插入一行。我正在使用mysqli扩展并使用准备好语句以防止sql注入。但是当我执行查询时,我得到错误2006:MySQL服务器消失了,但服务器运行良好。服务器是我自己的计算机。所以我不知道会发生什么。

这是我正在使用的代码:

<?php
header('Content-type: text/html; charset=utf-8');
if(isset($_GET['user']) && isset($_GET['pass'])){
    $db = new mysqli("localhost", "root", "", "admin");
    if ($db->connect_errno) {
        echo "Falló la conexión a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }
    if (!($db = $db->prepare("INSERT INTO logins(user,pass,ip,url) VALUES (?,?,?,?)"))) {
        echo "Falló la preparación: (" . $mysqli->errno . ") " . $mysqli->error;
    }
    if (!$db->bind_param('ssss', $_GET['user'],  $_GET['pass'],$_SERVER['REMOTE_ADDR'],$_SERVER["HTTP_REFERER"])){
        echo "Falló la vinculación de parámetros: (" . $db->errno . ") " . $db->error;
    }
    if (!$db->execute()) {
        echo "Falló la ejecución: (" . $db->errno . ") " . $db->error;
    }
    $db->close();
}

?>

由于

编辑:我忘记说我曾尝试使用ini_set技巧,但没有奏效

2 个答案:

答案 0 :(得分:3)

我认为问题是$db = $db->prepare,重新分配$db变量可能会导致断开连接。试着这样写:

$db = new mysqli("localhost", "root", "", "admin");
$stmt = $db->prepare("INSERT INTO logins(user,pass,ip,url) VALUES (?,?,?,?)");
$stmt->bind_param('ssss', $_GET['user'],  $_GET['pass'],$_SERVER['REMOTE_ADDR'],$_SERVER["HTTP_REFERER"]);
$stmt->execute();
$db->close();

答案 1 :(得分:1)

您的连接字符串错误,它应该是这样的:(除非您有一个名为admin且没有密码的数据库)

$db = new mysqli('localhost', 'my_user', 'my_password', 'my_db');