【问题标题】:php sqlite check if row existsphp sqlite 检查行是否存在
【发布时间】:2012-06-17 14:09:55
【问题描述】:

我正在尝试查看我的 sqlite 数据库中是否存在现有行,如果没有则添加它。但是我的查询有问题。我希望有人能发现我的错误。

具体来说,我认为错误在查询行中:

$query = 'SELECT * FROM plant WHERE common_Name = '. $commonName . ' AND latin_Name = '. $latinName . 'AND  url = '. $URL ;

谢谢你, 托德

// set path of database file
$file = "db/plants.db";

// create database object
$db = new SQLiteDatabase($file) or die("Could not open database");

// see if the EXACT same tag exists
$query = 'SELECT * FROM plant WHERE common_Name = '. $commonName . ' AND latin_Name = '. $latinName . 'AND  url = '. $URL ;
$result = $db->query($query) or die("Error in query");
$rows = sqlite_num_rows($result);


if($rows>0) return; //do not add it

// generate query string
$query = 'INSERT INTO plant (common_Name, latin_Name, url) VALUES("'.$commonName.'","'. $latinName.'","'.$URL.'")';

// execute query
// return result object
$result = $db->query($query) or die("Error in query");


// destroy database object
unset($db);

【问题讨论】:

  • 这应该回答你的问题:stackoverflow.com/questions/531035/…
  • 你尝试过面向对象的风格吗?即 $rows = $result->numRows();不确定它是否会有所作为......
  • @Inner-Design:我是 sqllite 新手,正在慢慢学习 OOP sqlite api。

标签: php sqlite


【解决方案1】:

您的 SELECT 查询中缺少引号,所以它失败了。

$query = "SELECT * FROM plant WHERE common_Name = '$commonName' AND latin_Name = '$latinName' AND  url='$URL'";
         ^                                        ^           ^ etc...

请注意指示的报价更改和格式差异。同样,除非您在代码 sn-p 之外的其他地方完成此操作,否则请注意,这种类型的查询构造容易受到 SQL injection attacks 的攻击,您应该阅读并了解这些内容,然后再进一步了解这些内容代码。

下次您放入错误处理程序时(顺便说一下,检查返回值的功劳),不要只输出静态的“出现问题”错误消息。这对诊断毫无用处。数据库可以准确地告诉您出了什么问题,因此请输出数据库的错误消息,例如sqlite_error_message().

【讨论】:

  • 你是说 sqlite_error_string 吗?我在 sqlite_error_message 上找不到任何文档。
【解决方案2】:

我不想回答我自己的问题,但是....

我错过了参数周围的双引号。这是一个有效的查询。

$query = 'SELECT * FROM plant WHERE common_Name ="'. $commonName .'" AND latin_Name = "'.$latinName .'" AND url = "'.$URL.'"';

托德

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 2016-01-14
    • 2012-08-12
    • 2013-09-26
    • 2015-01-20
    相关资源
    最近更新 更多