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

私が見ることができる1つの問題は、この関数です:

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);
}

そして、現在抱えている sql インジェクションの問題を回避するために、PDO または mysql で変数がバインドされたプリペアド ステートメントに切り替える必要があります。

于 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 に答える