Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysqli::prepare中的if语句_Php_Sql_Mysqli - Fatal编程技术网

Php 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

是否可以在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->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