Php SELECT查询是否可能正在Joomla DB中插入数据?
我需要检查一个值是否在DB中。我正在使用Php SELECT查询是否可能正在Joomla DB中插入数据?,php,mysql,select,joomla,joomla2.5,Php,Mysql,Select,Joomla,Joomla2.5,我需要检查一个值是否在DB中。我正在使用 $db = JFactory::getDBO(); $query = $db->getQuery( true ); $query->select($db->quoteName('id')); $query->from($db->quoteName('#__tablename')); $query->where($db->quoteName('fieldname') . ' = ' . $db->quote
$db = JFactory::getDBO();
$query = $db->getQuery( true );
$query->select($db->quoteName('id'));
$query->from($db->quoteName('#__tablename'));
$query->where($db->quoteName('fieldname') . ' = ' . $db->quoteName($valuetocheck));
$db->setQuery($query);
$id = $db->loadResult();
echo "value = " . $id;
if($id) {/*action if the value already exists*/} else {/*...*/}
问题是,我设置为$valuetocheck
的每个新值实际上都被插入到表中。如果我设置了一个还不存在的值,它就会被插入,因此我总是会得到一个有效的$id
,并且不能继续执行的else{}
可能吗?是否有任何解决方法来检查值是否已在内部?否,这是不可能的。有没有可能在下面的代码中以不同的方式重用db对象
die('test1')代码>就在您向我们展示的代码之前,请运行以确保表不会更改。不要介意网站没有显示任何内容
SELECT
query如果数据插入到表中,则决不向数据库插入任何值,因为它应该在其他地方。您也可以按如下方式检查numrows
,而不是检查$id
值
$db = JFactory::getDBO();
$query = $db->getQuery( true );
$query->select($db->quoteName('id'));
$query->from($db->quoteName('#__tablename'));
$query->where($db->quoteName('fieldname') . ' = ' . $db->quoteName($valuetocheck));
$db->setQuery($query);
$db->query();
if($db->getNumRows() >0){
//Data found
}
else{
//Nod Data found
}
希望对您有所帮助。尝试在这一行
$db->setQuery($query)之前打印$query
代码>并查看您得到了什么。如果它是select query,那么它肯定不会插入数据。查询不会插入任何值,并且您专门使用了select
。值可能被另一个查询插入,而使用$db->getNumRows()
似乎效果更好。无论如何,我得到一个警告,因为它缺少一个论点,但它不是那么重要。还有一件事,$db->quoteName
是奇怪地逃出电子邮件,然后user@host.com进入'user@host“.“com”
。。。电子邮件还有其他报价方法吗?请尝试$db->escape()而不是$db->quoteName(),警告您可能错过了$db->query();设置查询后。