0

出于某种原因,我的 SQL 不会连接任何想法?我使用函数连接到 SQl 但遇到了一些麻烦,因为它告诉我 $row_results 没有返回任何数据。

function db_connect() {
$db_connect = mysql_connect($db_host, $db_user, $db_pass);
if (!$db_connect)
{
    die('Can not connect: ' . mysql_error());
}
mysql_select_db($db_name, $db_connect);
}

function db_close() {
    mysql_close($db_connect);
}

function db_select($table_name, $table_where) {
    $row_result = mysql_query("SELECT * FROM '$table_name' WHERE email='$table_where'");
    $row_get = mysql_fetch_array($row_result);
    $row_count = mysql_num_rows($row_result);
}


db_connect();

db_select("attachments", "email@email.com");
die($row_get['email']);

db_close();
4

5 回答 5

2

我可以看到的一个问题是这个功能:

function db_select($table_name, $table_where) {
    $row_result = mysql_query("SELECT * FROM '$table_name' WHERE email='$table_where'");
    $row_get = mysql_fetch_array($row_result);
    $row_count = mysql_num_rows($row_result);
}

你不会从中返回任何东西。

您可以从使用例如开始:

function db_select($table_name, $table_where) {
    $row_result = mysql_query("SELECT * FROM '$table_name' WHERE email='$table_where'");
    $row_get = mysql_fetch_array($row_result);
    $row_count = mysql_num_rows($row_result);

    return array($row_count, $row_get);
}

你真的需要在 PDO 或 mysql 中切换到带有绑定变量的预处理语句,以避免你现在遇到的 sql 注入问题。

于 2012-11-19T21:12:01.723 回答
0

改变这个

if (!$db_connect)
{
    die('Can\'t connect: ' . mysql_error());
}
于 2012-11-19T21:07:34.043 回答
0

尝试这个:

$db_config = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
        /* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

对于更高版本的 PHP,建议使用改进的 MySQL 库。

于 2012-11-19T21:10:16.043 回答
0

在这一行中,表名周围有引号。

$row_result = mysql_query("SELECT * FROM '$table_name' WHERE email='$table_where'");

不要在表名周围加上引号。在选择之后运行mysql_error()可能会吐出与此相关的错误。

此外,mysql_*正在被弃用。您应该使用mysqli_*或 PDO。

于 2012-11-19T21:11:42.557 回答
0

你的变量有问题。在函数之外db_select,变量 $row_get 不存在!如果您想将结果发送到新变量中,则必须像这样使用 return :

function db_select($table_name, $table_where,$connection) {

    $row_result = mysqli_query($connection,"SELECT * FROM $table_name WHERE email='".mysqli_real_escape_string($table_where).'");
    $row_get = mysqli_fetch_array($row_result);
    $row_count = mysqil_num_rows($row_result);
    return array($row_get,$row_count);
}


$var = db_select("attachments", "email@email.com", db_connect());
echo $var[0]['email'];
于 2012-11-19T21:13:07.113 回答