Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.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绑定参数错误_Php_Mysql - Fatal编程技术网

Php mysqli绑定参数错误

Php mysqli绑定参数错误,php,mysql,Php,Mysql,我的数据库中有两个表。当我执行下面的php脚本时,会出现错误。我认为这个查询是正确的,但是我如何绑定错误的参数呢 Display +-------+------------+-------------+ | Index | DISPLAY_ID | Picture_ID | +-------+------------+-------------+ | 1 | 12 | longblob | +-------+------------+-------------+

我的数据库中有两个表。当我执行下面的php脚本时,会出现错误。我认为这个查询是正确的,但是我如何绑定错误的参数呢

Display
+-------+------------+-------------+
| Index | DISPLAY_ID | Picture_ID  |
+-------+------------+-------------+
|     1 |         12 | longblob    |
+-------+------------+-------------+

警告:mysqli_stmt::bind_result::bind变量的数量与中prepared语句中的字段数量不匹配


修复:如果您正在从数据库读取图片,请确保仅在查询中返回blob数据。从SELECT语句中删除cards.CARD\u TYPE。

您不应该先进行查询。准备好后,绑定这些值,然后执行它。这就是你必须做的


在bindparam中,您必须使用si,因为您要传递两个值。

您不应该首先执行查询。准备好后,绑定这些值,然后执行它。这就是你必须做的

在bindparam中,您必须使用si,因为您要传递两个值。

尝试以下两种修复:

摆脱:如果$mysqli->query$stmt{printfErrormessage:%s\n$mysqli->error;} 在调用execute时执行查询 您需要绑定两个参数,并传递两个参数,但只列出一个类型。将bind_param调用更改为: $stmt->bind_paramsi,$cardtype,$displayid;//s代表字符串,i代表int 编辑:尝试将代码更改为:

$stmt = $mysqli->prepare("SELECT cards.CARD_TYPE, display.PICTURE_ID 
FROM cards  
INNER JOIN display ON cards.DISPLAY_ID = display.DISPLAY_ID 
WHERE display.DISPLAY_ID=? AND cards.CARD_TYPE =?" );


$displayid=11;
$cardtype='Mythic';

$stmt->bind_param("is", $displayid, $cardtype);
$stmt->execute();
尝试以下两种修复方法:

摆脱:如果$mysqli->query$stmt{printfErrormessage:%s\n$mysqli->error;} 在调用execute时执行查询 您需要绑定两个参数,并传递两个参数,但只列出一个类型。将bind_param调用更改为: $stmt->bind_paramsi,$cardtype,$displayid;//s代表字符串,i代表int 编辑:尝试将代码更改为:

$stmt = $mysqli->prepare("SELECT cards.CARD_TYPE, display.PICTURE_ID 
FROM cards  
INNER JOIN display ON cards.DISPLAY_ID = display.DISPLAY_ID 
WHERE display.DISPLAY_ID=? AND cards.CARD_TYPE =?" );


$displayid=11;
$cardtype='Mythic';

$stmt->bind_param("is", $displayid, $cardtype);
$stmt->execute();

函数prepare->bind_param->executeOrder of function prepare->bind_param->execute给我的绑定变量数量不匹配。我认为问题出在查询中。@如果您看到我的编辑,我相信查询也有问题。我用我传递的参数在myphpadmin中测试了查询,它返回了正确的数据。但是运行查询仍然会给出绑定变量的数量与准备语句中的字段数量不匹配。忽略我的编辑,查询是可以的,您只需绑定2个参数变量,并确保对参数类型使用字符串si。我将代码编辑为当前相同的错误。仍然给我绑定变量的数量不匹配。我认为问题出在查询中。@如果您看到我的编辑,我相信查询也有问题。我用我传递的参数在myphpadmin中测试了查询,它返回了正确的数据。但运行查询时仍然会给出绑定变量的数量与准备语句中的字段数量不匹配。忽略我的编辑,查询是可以的,您只需要绑定2个参数变量,并确保对参数类型使用字符串si。我将代码编辑为目前仍然相同的错误。
$stmt = $mysqli->prepare("SELECT cards.CARD_TYPE, display.PICTURE_ID 
FROM cards  
INNER JOIN display ON cards.DISPLAY_ID = display.DISPLAY_ID 
WHERE display.DISPLAY_ID=? AND cards.CARD_TYPE =?" );


$displayid=11;
$cardtype='Mythic';

$stmt->bind_param("is", $displayid, $cardtype);
$stmt->execute();