Php SELECT查询是否可能正在Joomla 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中。我正在使用

$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')就在您向我们展示的代码之前,请运行以确保表不会更改。不要介意网站没有显示任何内容

  • 然后将die命令移动到echo命令之后,然后再次运行。在我看来,在现阶段,没有办法将valuetocheck列入表格。检查

  • 插入valuetocheck后继续测试

  • 祝你好运

    试试这个

    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();设置查询后。