Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP exec()在SQLite数据库上插入字符串_Php_Sqlite - Fatal编程技术网

使用PHP exec()在SQLite数据库上插入字符串

使用PHP exec()在SQLite数据库上插入字符串,php,sqlite,Php,Sqlite,我试图使用PHP的SQLite3库中的exec函数在数据库中插入therms,但字符串有问题: foreach($xml->children() as $child) { $id = 0; $nome = "null"; $partido = "null"; $tag_localizacao = 0; foreach ($child->children() as $grandchild) { switch($grandc

我试图使用PHP的SQLite3库中的
exec
函数在数据库中插入therms,但字符串有问题:

foreach($xml->children() as $child) {
    $id = 0;
    $nome = "null";
    $partido = "null";
    $tag_localizacao = 0;

    foreach ($child->children() as $grandchild) {   
        switch($grandchild->getName()) {
            case "id":
                $id = $grandchild;
                break;
            case "nome":
                $nome = $grandchild;
                break;
            case "partido":
                $partido = $grandchild;
                break;
            case "tagLocalizacao":
                $tag_localizacao = $grandchild;
        }
    }
    $db->exec('INSERT INTO lista_deputados (id, nome, partido, tag_localizacao) VALUES ('.$id.','.$nome.', '.$partido.', '.$tag_localizacao.')');
}
$id
$tag\u localizacao
都是整数,它可以完美地工作
$nome
$partido
是字符串,根本不起作用。。。当字符串只有一个单词时,比如“test”,PHP认为它是一个列,如果有更多的单词,我不知道会发生什么,但错误消息是:

警告:SQLite3::exec():靠近“Lopes”:第30行C:\wamp\www\desafio\temp.php中的语法错误

在这种情况下,字符串为“Adalclever Lopes”


我真的不明白发生了什么,我甚至试图逃逸字符串。

尝试将字符串用单引号括起来,如:

$db->exec("INSERT INTO lista_deputados (id, nome, partido, tag_localizacao) VALUES ($id,'".$nome."', '".$partido."', $tag_localizacao)");
您也不需要在$id和$tag_localizacao周围使用单引号和点,因为PHP为您提供了这些


当您在数据库查询中遇到语法错误时,通常值得打印出来并直接在数据库中运行,以进行尝试。

我对PHP不太熟悉,但通常请求参数不会连接到查询,而是作为参数提供。这也有助于避免SQL注入。这里有一个很好的解释说明应该如何做:嘿,Alexey,谢谢你给我关于SQL注入的提示,但我现在并不真的担心它。。。我试图将该值作为函数参数传递,但没有成功。。。我一直得到同样的结果…现在就学习如何使用准备好的语句,在你创建一个你忘记的安全漏洞之前。此外,预先准备好的语句可以防止值导致语法错误,这似乎是您现在遇到的问题。。。我刚刚收到这个错误消息:(!)解析错误:语法错误,在C:\wamp\www\desafio\temp.php的第33行出现意外的“”。我试图打印这些值,我想我还可以……我的意思是这些值是正确的……我试图插入“Adalclever Lopes”“在数据库上手动输入字符串,甚至尝试使用字符串本身使用exec函数插入它。。。一切正常。。。