php和sqlite insert语句的语法问题

当我尝试插入Cat和Purr时,此代码给出了一个错误。 该教程没有双引号,但它们的代码也不起作用。 这必须是某种语法问题。</ p>

  message('创建db对象'); 
$ db = new bwSQLite3(DB_FILENAME,TABLE_NAME);
$ tn = TABLE_NAME;
消息('创建表');
$ db-&gt; sql_do(“Drop table if exists $ tn”);
$ db-&gt; sql_do(“create table $ tn( id整数主键,动物文本,声音文本)“);
//插入一些记录
$ db-&gt; sql_do(”插入$ tn(动物,声音)值(?,?),'cat' ,'Purr'“); //在这里发布
$ db-&gt; sql_do(“插入$ tn(动物,声音)值(?,?),'dog','Woof'”);
$ db-&gt; sql_do( “插入$ tn(动物,声音)值(?,?),'duck','Quack'”);
$ db-&gt; sql_do(“插入$ tn(动物,声音)值”? ?),'bear','Grr'“);
消息('表中有%d行',$ db-&gt; count_recs());
} catch(PDOException $ e){
错误($ e-&gt; getMessage());
}
</ code> </ pre>

这是错误:

错误:语法错误,意外'插入'(T_STRING )在第42行的C:\ xampp \ htdocs \ ExerciseFiles \ Chap01 \ create.php </ p>
</ div>

展开原文

原文

This code gives me an error when I try to insert Cat and Purr. The tutorial didn't have a double quotation mark, but their code didn't work either. This has to be a syntax issue of some sort.

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());
}

Here is the error: Parse error: syntax error, unexpected 'insert' (T_STRING) in C:\xampp\htdocs\ExerciseFiles\Chap01\create.php on line 42

douao1959
douao1959 解析错误:语法错误,第42行的C:\xampp\htdocs\ExerciseFiles\Chap01\create.php中的意外“插入”(T_STRING)
4 年多之前 回复
donglu9898
donglu9898 请将您的错误添加到您的问题中。
4 年多之前 回复

1个回答



  $ db-&gt; sql_do(“插入$ tn(动物,声音)值(?,?),” 猫','Purr'“);  //就在这里问题
</ code> </ pre>

应该是</ p>

  $ db-&gt; sql_do(“insert into $ tn  (动物,声音)值(?,?)“,'cat','Purr');

</ code> </ pre>

查看语法高亮显示。</ p>

听起来你不明白PHP如何使用字符串,试试 这样可以看出区别:</ p>

  $ my_name ='Matt'; 
echo'Hello $ my_name。';
echo“Hello $ my_name。”;
</ code > </ pre>
</ div>

展开原文

原文

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

should be

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

look at the syntax highlighting.

Also it sounds like you don't understand how PHP works with strings, try this to see the difference:

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

dongwei7048
dongwei7048 另外@SDJ,语法错误是由于在sql_do参数的末尾有一个虚假的。你想双引用参数化查询(第一个参数),然后提供参数值(其余参数)。理解' vs“很有价值,但这里问题的真正根源在于,参数化查询和参数值都放在一个双引号字符串中。
4 年多之前 回复
doujiao8649
doujiao8649 是的,我明白了。 我很欣赏这个教程。 ''=文字字符串。 “”用于命令和字符串。
4 年多之前 回复
douzi9744
douzi9744 不用担心,你明白它为什么有效吗?
4 年多之前 回复
donglin6659
donglin6659 那很有效! 谢谢!
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问