【发布时间】:2012-01-05 16:42:36
【问题描述】:
好吧,我不是最好的程序员,我想我会问这个问题,希望有人能发现错误,或者只是告诉我我走错了路。
我有一个 Flash Builder 网站,它正在尝试创建一个搜索函数来搜索我的 MYSQL 数据库,然后返回结果。
我已经包含了非空部分,以防用户没有在相关变量中输入任何数据。
但是我收到了这个错误 原因:服务器错误 MySQL Error - 1064: You have an error in your SQL syntax;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行 #0 的“wells AND sex LIKE female”附近使用正确的语法
这里是代码
public function searchClients($fname, $lname, $country, $town, $sex) {
$SQLStatment = "SELECT id, fname, lname, sex, country, town, dateofbirth, monthofbirth, yearofbirth FROM $this->tablename";
$WhereClause = "";
$where =" Where ";
if($fname != "NULL") {
$WhereClause.= 'Fname LIKE '.$fname;
}
if($lname != "NULL") {
if($WhereClause != "")
{
$WhereClause.= ' AND lname LIKE ' .$lname;
}
else
{
$WhereClause = 'lname LIKE ' .$lname;
}
}
if($country != "NULL") {
if($WhereClause != "")
{
$WhereClause.= ' AND country LIKE ' .$country;
}
else
{
$WhereClause = 'country LIKE ' .$country;
}
}
if($town != "NULL") {
if($WhereClause != "")
{
$WhereClause.= ' AND town LIKE ' .$town;
}
else
{
$WhereClause = 'town LIKE ' .$town;
}
}
if($sex != "NULL") {
if($WhereClause != "")
{
$WhereClause.= ' AND sex LIKE ' .$sex;
}
else
{
$WhereClause = 'sex LIKE ' .$sex;
}
}
$SQLStatment.= $where;
$SQLStatment.= $WhereClause;
$stmt = mysqli_prepare($this->connection, $SQLStatment);
$this->throwExceptionOnError();
mysqli_stmt_execute($stmt);
$this->throwExceptionOnError();
$rows = array();
mysqli_stmt_bind_result($stmt, $row->ID, $row->fname, $row->lname, $row->sex, $row->country, $row->town, $row->dateofbirth, $row->monthofbirth, $row->yearofbirth);
while (mysqli_stmt_fetch($stmt)) {
$row->fname = ucfirst(substr($row->fname,0,1));
$row->lname = ucfirst($row->lname);
$row->town = ucfirst($row->town);
$row->lname = (($row->fname) . " " . ($row->lname));
$row->yearofbirth = GetAge($row->dateofbirth. '-' .$row->monthofbirth. '-' .$row->yearofbirth);
$row->Pic_loc = "";
$row->Pic_loc= "IMAGES/".($row->ID)."/image01.jpg";
$rows[] = $row;
$row = new stdClass();
mysqli_stmt_bind_result($stmt, $row->ID, $row->fname, $row->lname, $row->sex, $row->country, $row->town, $row->dateofbirth, $row->monthofbirth, $row->yearofbirth);
}
mysqli_stmt_free_result($stmt);
mysqli_close($this->connection);
return $rows;
}
对我来说看起来不错,但不起作用,有什么建议吗? 在代码中更准确地指出它的呻吟声是
if($town != "NULL") {
if($WhereClause != "")
{
$WhereClause.= ' AND town LIKE ' .$town;
}
else
{
$WhereClause = 'town LIKE ' .$town;
}
}
if($sex != "NULL") {
if($WhereClause != "")
{
$WhereClause.= ' AND sex LIKE ' .$sex;
}
else
{
$WhereClause = 'sex LIKE ' .$sex;
}
}
只是觉得很奇怪,它并没有抱怨其他三个 if 子句,而是抱怨最后两个。
【问题讨论】:
标签: php mysql flash-builder mysql-error-1064 amfphp