php和sqlite插入语句的语法问题


Syntax issue with php and a sqlite insert statement

当我尝试插入Cat和Purr时,此代码会给我一个错误。教程没有双引号,但他们的代码也不起作用。这一定是某种语法问题

message('creating the db Object');
    $db = new bwSQLite3(DB_FILENAME, TABLE_NAME);
    $tn = TABLE_NAME;
    message('creating the table');
    $db->sql_do("Drop table if exists $tn");
    $db->sql_do("create table $tn ( id integer primary key, animal text, sound text )");
    //insert some records
    $db->sql_do("insert into $tn (animal, sound) values (?, ?), 'cat', 'Purr' "); //right here issues
    $db->sql_do("insert into $tn (animal, sound) values (?, ?), 'dog', 'Woof' ");
    $db->sql_do("insert into $tn (animal, sound) values (?, ?), 'duck', 'Quack' ");
    $db->sql_do("insert into $tn (animal, sound) values (?, ?), 'bear', 'Grr' ");
    message('there are %d rows in the table', $db->count_recs());
}catch (PDOException $e) {
    error($e->getMessage());
}

以下是错误:分析错误:语法错误,C:''examplep''htdocs''ExerciseFiles''Chap01''create.php中第42行出现意外的"insert"(T_STRING)

 $db->sql_do("insert into $tn (animal, sound) values (?, ?), 'cat', 'Purr' "); //right here issues

应该是

 $db->sql_do("insert into $tn (animal, sound) values (?, ?)", 'cat', 'Purr'); 

看语法高亮显示。

另外,听起来你不明白PHP是如何处理字符串的,试着看看区别:

$my_name = 'Matt';
echo 'Hello $my_name.';
echo "Hello $my_name.";