我想知道如何检查某个表是否包含某列中的值。
我需要检查列'电子邮件'是否包含某人试图注册的电子邮件,如果存在,则不执行任何操作,但是,如果不存在,请将数据插入数据库。
我需要做的就是检查电子邮件列是否包含用户注册的值。
我正在使用RedBeanPHP ORM,我可以在不使用它的情况下执行此操作,但我需要将其用于程序指南。
我已经尝试找到它们,但如果它们不存在,则会在redbean PHP文件中返回错误。这是错误:
Fatal error: Call to a member function find() on a non-object in /home/aeterna/www/user/rb.php on line 2433
这是我在尝试时使用的代码:
function searchDatabase($email) {
return R::findOne('users', 'email LIKE "' . $email . '"');
}
答案 0 :(得分:4)
我对函数的处理方法是
function searchDatabase($email) {
$data = array('email' => $email);
$user = R::findOne('users', 'email LIKE :email, $data);
if (!empty($user)) {
// do stuff here
} // end if
} // end function
它更干净,功能更强大
答案 1 :(得分:3)
好像你没有连接到数据库。 你在R :: find()之前完成了R :: setup()吗?
RedBeanPHP如果找不到R :: $ redbean实例就会引发此错误,facade静态函数只是将调用路由到$ redbean对象(隐藏所有不喜欢那种对象的人的面向对象的模糊性的东西)。
但是你需要使用R :: setup()来引导外观。通常你可以用两行来开始使用RB:
require('rb.php'); //cant make this any simpler :(
R::setup(); //this could be done in rb.php but people would not like that ;)
//and then go...
R::find( ... );
我建议检查$ redbean对象是否可用,或者由于某种原因代码流是否跳过了R :: setup()boostrap方法。
答案 2 :(得分:0)
编辑以说明您更新的问题:
根据错误消息,错误发生在第2433行rb.php中的函数find()
内。我猜测rb.php是RedBean包。
请确保您已在脚本中包含rb.php,并根据 RedBean Manual 中的说明设置数据库。
作为一个起点,看看它在rb.php的第2433行尝试做什么。它似乎是在无效对象上调用方法。弄清楚该对象的创建位置及其无效原因。也许 find 函数提供了错误的参数。
您可以通过粘贴rb.php中的find()
函数来更新您的问题,并指出哪一行是2433.如果函数太长,您可以将其粘贴到像pastebin这样的网站上。 com并从这里链接到它。
答案 3 :(得分:0)
你的错误听起来还没有完成R :: setup()。
我执行您想要的检查的方法是这样的:
$count = count(R::find('users', 'email LIKE :email', array(':email' => $email)));
if($count === 0)
{
$user = R::dispense('users');
$user->name = $name;
$user->email = $email;
$user->dob = $dob;
R::store($user);
}
答案 4 :(得分:-1)
我不知道它是否是基本的,但是使用SQL(使用PHP作为变量),查询可能看起来像
$lookup = 'customerID';
$result = mysql_fetch_array(mysql_query("SELECT columnName IN tableName WHERE id='".$lookup."' LIMIT 1"));
$exists = is_null($result['columnName'])?false:true;
如果您只是想在数据库中查找单个值,则应始终将结果限制为1,这样,如果在第一条记录中找到,则查询将停止。
希望这有帮助