Php 基本SQL帮助-查询表达式中的语法错误

Php 基本SQL帮助-查询表达式中的语法错误,php,sql,syntax-error,Php,Sql,Syntax Error,我开始学习SQL,并制作了一个基本的.mdb表。我正在尝试创建一个页面,用户在其中选择一个图书类别,当他们单击该页面时,下一个页面将在他们选择的图书类别中包含图书内容和作者。我目前只有一本书和作者列出了每个类别,以保持目前的简单 最初,服务器为所有图书类别选择选择数据库中的第一本书,因此我尝试合并用户选择的类别,但现在我遇到一个错误: “致命错误:未捕获异常‘com_exception’,消息来源:Microsoft Office Access数据库引擎描述:E:\server\Database

我开始学习SQL,并制作了一个基本的.mdb表。我正在尝试创建一个页面,用户在其中选择一个图书类别,当他们单击该页面时,下一个页面将在他们选择的图书类别中包含图书内容和作者。我目前只有一本书和作者列出了每个类别,以保持目前的简单

最初,服务器为所有图书类别选择选择数据库中的第一本书,因此我尝试合并用户选择的类别,但现在我遇到一个错误:

“致命错误:未捕获异常‘com_exception’,消息来源:Microsoft Office Access数据库引擎描述:E:\server\Database\moredetails2.php堆栈跟踪中的查询表达式‘author=’中出现语法错误(缺少运算符):#0 E:\server\Database\moredetails2.php(20):com->Execute('SELECT Books,C...)#1{main}”在第20行的E:\server\Database\moretails2.php中抛出”

我的页面代码是:

<?php
$authorid=filter_input(INPUT_GET, "author");

$conn = new COM("ADODB.Connection") or die("Cannot start ADO");
//$connString= "Provider=Microsoft.Jet.OLEDB.4.0;Data 

Source=../Database/poebase.mdb";
$connString= "Provider=Microsoft.ACE.OLEDB.12.0;Data 

Source=../Database/poebase.mdb";
//creates the connection object and define the connection string

$conn->Open($connString);

$selectCommand="SELECT Books, Author, Content FROM Authors WHERE author=$authorid;";

$rs = $conn->Execute($selectCommand);
//opens a recordset from the connection object
if (!$rs->EOF){
$BookName=$rs->Fields("Books");
$AuthorName=$rs->Fields("Author");
$BookContent=$rs->Fields("Content");
}

print "Book: $BookName<br>";
print "Author: $AuthorName<br>";
print "$BookContent<br><br>";

$rs->Close;

?>


选定的作者在哪里?我在中添加了它!感谢您指出。VR46修复了sql的语法错误,我的建议修复了其余的吗?不,没有。奇怪的是,一旦我更新了author=$authord;对于“$authorid”,我现在得到了图书、作者和图书内容的未定义变量?这意味着您的查询没有得到任何结果。如果查询有结果,您提到的变量只会得到它们各自的值。
if(!$rs->EOF)
应该有一个
else
子句,用于将变量设置为空白字符串(或任何您想要的内容)。这是一种方法。另一种方法是在
if
语句之前为这些变量赋值,这样无论
与否它们都有值$rs->EOF