-5

私のSQLデータベースからのデータをHTMLフォームにロードしようとしています。私はZampp phpmyadminを使用しています

<?php
$user = 'root';
$password = '';


$database="client";

mysql_connect(localhost,client);
@mysql_select_db($client) or die( "Unable to select database");
echo $query = "SELECT * $title,$service_number,$firstName,$LastName,$dob,$address,$postcode,$tel_number,$mob_number,$email,$partner_id ";
$result = mysql_query($query);

mysql_close();
?>

何が間違っていますか?

4

4 に答える 4

3
  1. mysql_関数は非推奨です。PDOまたは_mysqli_
  2. @;を使用してエラーを抑制しないでください。エラー ハンドラを使用する (例: mysql_error)
  3. どのテーブルまたはどの列からも選択していません
  4. クエリの実行後に結果セットをフェッチしない
  5. パラメーターをバインドせずに変数をクエリに渡すと、SQL インジェクションにさらされる

使用例mysqli_

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

if ($result = mysqli_query($link, $query)) {

    /* fetch associative array */
    while ($row = mysqli_fetch_assoc($result)) {
        printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

    /* free result set */
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

ドキュメントを見る

于 2013-03-11T14:32:14.183 に答える
1

クエリが適切に構成されていません。レコードを選択するテーブル名を指定する必要があります。たとえば、次のようなことを行う必要があります。

SELECT * FROM `tblname`

これにより、テーブル内の各レコードのすべてのフィールドが選択されます。次のように、特定のフィールドを (*ワイルドカードなしで)含めることで指定できます。

SELECT `title`, `service_number` FROM `tblname`

ただし、mysql_*一連の関数は現在非推奨であり、PDOまたはMySQLiのいずれかを使用する必要があることに注意してください。

また、渡す変数を必ずエスケープする必要があります。コードは、現在の形式では SQL インジェクションに対して広く開かれています。

于 2013-03-11T14:32:16.017 に答える
0

これでうまくいくはずです

<?php
$dsn = 'mysql:host=localhost;dbname=client';
$username = 'root';
$password = '';
$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
); 

$dbh = new PDO($dsn, $username, $password, $options);

$sql = $dbh->prepare("SELECT title,service_number,FirstName,LastName,dob,address,postcode,te‌l_number,mob_number,email,partner_id FROM client_table");
$sql->execute();
$results = $sql->fetchAll(PDO::FETCH_ASSOC);

foreach($results as $r){
var_dump($r);
} 
于 2013-03-11T14:36:51.547 に答える
0

あなたの質問はすべて間違っています。適切なSELECTクエリは次のとおりです。

SELECT fields FROM table;
SELECT * FROM table;

クエリ ( ) で PHP 変数を使用して$title,$service_number...いますが、提供されたコードには存在しません。クエリを修正する必要があります。

注:両方ではなくfieldsORです。*また、MySQL_* は使用しないでください。PHP 5.5 で廃止されました。MySQLi_* または PDO を使用

于 2013-03-11T14:34:25.157 に答える