Php mysqli::prepare中的if语句
是否可以在mysqli::prepare语句中插入if语句Php mysqli::prepare中的if语句,php,sql,mysqli,Php,Sql,Mysqli,是否可以在mysqli::prepare语句中插入if语句 $check->$DBH->prepare('IF EXISTS(SELECT COUNT(ID) FROM users WHERE username=?)>0'); $check->bind_param('i',$username); $check->execute(); 如果是这样,我的下一个问题是如何处理查询?如果找到,它将返回1,或者返回受影响的行或结果 $result=$check->af
$check->$DBH->prepare('IF EXISTS(SELECT COUNT(ID) FROM users WHERE username=?)>0');
$check->bind_param('i',$username);
$check->execute();
如果是这样,我的下一个问题是如何处理查询?如果找到,它将返回1,或者返回受影响的行或结果
$result=$check->affected_rows;//rows affected
或
或
还是说他一切都是可能的 准备好的声明只处理数据 它不会以任何方式影响SQL语句。 任何使用占位符替换动态数据文本的SQL语句都可以工作
如果将非法SQL传递到prepared语句中,它将不起作用。否。如果在MySQL中作为语句,则只能在存储程序(如过程、函数和触发器)中使用。这正是“XY问题”的情况。出于某种原因,您试图过度设计一些常见而愚蠢的事情,比如在数据库中检查用户的存在,您想做什么?检查用户是否存在?只需在不带任何条件的情况下运行常规select查询statements@YourCommonSense基本上是的。我知道可以从username=?的用户那里使用
selectcount(*)来完成,但我只是想看看是否可以使用if语句,因为它需要更少的读取?根据AndrewKelly的说法:我们不知道预处理语句中存在非法SQL。为什么这个问题会困扰您?您目前在检查用户时是否遇到任何特殊问题?你为什么认为那篇文章是适用的?
$check->bind_result($rowExists);//row exist
$check->num_rows();//number of rows