在php预处理语句中传递数组值不起作用

问题描述 投票:0回答:1

因此,我有一个带有bind_param的准备好的语句,如果我将每条数据分配给各个变量并在bind_param语句中使用这些变量,则可以正常工作,但是如果我将每条数据分配给一个数组元素并尝试不起作用在bind_param语句中使用数组元素。以下示例:

这有效:$insertquery->bind_param("sssssssssssssssssssss", $dbname, $dbmanacost, $dbcmc, $dbcolors, $dbtype, $dbsupertypes, $dbtypes, $dbsubtypes, $dbrarity, $dbcardtext, $dbflavortext, $dbartist, $dbnumber, $dbpower, $dbtoughness, $dblayout, $dbmultiverseid, $dbexpansion, $dbexpansioncode, $dbreleasedate, $dbversions);

但是这会将空白行插入数据库:$insertquery->bind_param("sssssssssssssssssssss", $db['name'], $db['manacost'], $db['cmc'], $db['colors'], $db['type'], $db['supertypes'], $db['types'], $db['subtypes'], $db['rarity'], $db['cardtext'], $db['flavortext'], $db['artist'], $db['number'], $db['power'], $db['toughness'], $db['layout'], $db['multiverseid'], $db['expansion'], $db['expansioncode'], $db['releasedate'], $db['versions']);

两个示例中变量的内容完全相同。我想将单个数组用于组织目的,但是我不确定为什么准备好的语句不会读取数据。

php mysql prepared-statement
1个回答
0
投票

问题是,每次循环时,我都通过重新声明数组来重置数组,例如$ db = array(...),但显然这断开了已准备好的语句的链接。我重写了代码,以使用foreach循环将每个数组元素空白,并对其进行了修复。

© www.soinside.com 2019 - 2024. All rights reserved.