Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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的bind_param中,有什么原因不能将所有列定义为类型字符串?_Php_Mysql_Mysqli - Fatal编程技术网

在PHP的bind_param中,有什么原因不能将所有列定义为类型字符串?

在PHP的bind_param中,有什么原因不能将所有列定义为类型字符串?,php,mysql,mysqli,Php,Mysql,Mysqli,我在一些表中插入了40到50列-类型定义是一场噩梦-看起来像这样:“ississississississississississississississississississississsiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 当我添加一列时,我不知道下一个字母放在哪里。如果我搞砸了,很明显字符串会被转换成数字,这毫无意义。但是作为字符串处理的数字在MySQL中似乎没有问题。还有谁看到我应该担心的事情吗

我在一些表中插入了40到50列-类型定义是一场噩梦-看起来像这样:“ississississississississississississississississississississsiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

当我添加一列时,我不知道下一个字母放在哪里。如果我搞砸了,很明显字符串会被转换成数字,这毫无意义。但是作为字符串处理的数字在MySQL中似乎没有问题。还有谁看到我应该担心的事情吗

请参见此处的绑定参数文档: 以下是建议

构建包含表列及其类型的数组 比如

 $table_columns = array('NAME_OF_COLUMN_1'=>'i',
 'NAME_OF_COLUMN_2'=>'i',
 'NAME_OF_COLUMN_3'=>'s',
 ...
如果列类型发生更改,请更新$table\u列。 如果有新添加的列,请将新列添加到$table_列中。 如果要删除现有列,请将现有列从“$table\u columns”中远程删除

在那之后,只是

implode('', array_values($table_columns))
用于约束

列出列名

implode(',', array_keys($table_columns))

此方法将减少易出错,并易于维护

ISIII?对不起,你的问题也是一个小小的噩梦。您能再详细说明一下吗?@deceze这些是mysqli语句中占位符的定义。s代表字符串,i代表整数。当您有一个类似select foo from bar的语句,其中a=?和b=?,每?对应于bind param调用中的一个字母/类型。非常感谢大家跳到那里Gordon-正是我的意思。哦,天哪@戈登:谢谢你的澄清@Arbol您是否有可能切换到一个更理智的db模式和/或数据库接口?即使在较小的查询中,这也是一个问题。前几天我遇到了一种情况,我有一个类似于SELECT*的表格,其中number=?名称=?地点=-正确的类型定义是'iss',但我将它们替换为'sis',并使自己撤销了伤害和烦恼的级别,直到我发现了这个小错误。是的-但这并没有回答我关于使用字符串类型而不是整数通过PHP mysqli将所有值插入MySQL的问题。不过,感谢您尝试为我提出解决方案。非常感谢。