0

TAFE で (テンプレートと指定されたリンク/データベースから) サイトを作成しているので、データベースを編集できません。とにかく、ページをロードすると、「@」記号の近くにあるものについて構文エラーが発生します。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@com.au' at line 1

私のコードは次のとおりです。

mysql_select_db($database_sim6a2010, $sim6a2010);
$query_Recordset1 = "SELECT * FROM employeeproject WHERE projectID=" . $_GET['projectID'];
$Recordset1 = mysql_query($query_Recordset1, $sim6a2010) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

mysql_select_db($database_sim6a2010, $sim6a2010);
$query_Recordset2 = "SELECT * FROM project WHERE projectID=" . $_GET['projectID'];
$Recordset2 = mysql_query($query_Recordset2, $sim6a2010) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$totalRows_Recordset2 = mysql_num_rows($Recordset2);

mysql_select_db($database_sim6a2010, $sim6a2010);
$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee, employeeproject WHERE email=" . $row_Recordset1["email"];
$Recordset3 = mysql_query($query_Recordset3, $sim6a2010) or die(mysql_error());
$row_Recordset3 = mysql_fetch_assoc($Recordset3);
$totalRows_Recordset3 = mysql_num_rows($Recordset3);

ここで指摘しておきますが、私は mysql を使用するのが好きではありません。このフォーラムで使用しないように言われています (そして私は使用しません) が、これは私たちが取り組んでいるものであり、使用する必要があります。また、Dreamweaver の巨大な「ページ上の無意味なコードをチャックする」ことも好きではありませんが、Dreamweaver のレコードセットと GUI を使用する必要があると言われています。

とにかく、エラーが発生している部分は次のとおりです。

$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee, employeeproject WHERE email=" . $row_Recordset1["email"];

ご想像のとおり、その電子メール部分は「Sam@com」などでいっぱいで、これがエラーの原因になっています。データベース内の @ sybmols がコードのビットではないことを PHP に知らせるにはどうすればよいでしょうか?

十分な情報を提供したことを願っています。アットマーク (@) を含む検索では常にコードとして使用されるため、質問することにしました。

4

3 に答える 3

1

$row_Recordset1["email"]文字列なので引用符を追加する必要があります

$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee, employeeproject WHERE email='" . $row_Recordset1["email"]."'";

ノート:

mysql_* 関数を使用しないでください。それらはすぐに非推奨になります。PDO または mysqli 関数を使用します。

SQL Injectionまた、コードが脆弱に見えることに注意してください。

于 2012-11-22T04:07:01.260 に答える
1

次のように、文字列データを一重引用符で囲む必要があります。

$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee, employeeproject WHERE email='" . $row_Recordset1["email"] . "'";
于 2012-11-22T04:05:18.670 に答える
0

@G-Nuggetandによって対処される問題 #1 @Muthu Kumaran-email一重引用符で囲みます''

$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee, employeeproject WHERE email='" . $row_Recordset1["email"] . "'";

問題 #2 - 「where 句の列 'email' があいまいです」。employee2 つのテーブル&からフィールドを取得employeeprojectしていますが、 のテーブルを指定していませんemail

$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee, employeeproject WHERE employee.email='" . $row_Recordset1["email"] . "'";

このクエリを実行するより良い方法はJOIN

$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee LEFT JOIN employeeproject ON employee.name=employeeproject.name  WHERE employee.email='" . $row_Recordset1["email"] . "'";
于 2012-11-22T04:31:19.110 に答える