if ($response_array[0] == 1) {
$table = payments_received;
function mysql_insert_array($table, $response_array) {
foreach ($response_array as $field=>$value) {
$fields[] = '`' . $field . '`';
$values[] = "'" . mysql_real_escape_string($value) . "'";
}
$field_list = implode(',', $fields);
$value_list = implode(', ', $values);
$query = "INSERT INTO `" . $table . "` (" . $field_list . ") VALUES (" . $value_list . ")";
if (!$query) {
$message = mysql_error();
die($message);
}
}
include('receipt.php');
}
Run Code Online (Sandbox Code Playgroud)
任何想法为什么这不起作用?我知道顶部的条件是满意的,因为脚本继续包含receipt.php(代码底部).我知道$ response_array也有这样的数据(加上我在收据中使用它的数据).尽管$ query下有条件,但我没有得到任何错误输出(顺便说一句,我的MySQL连接信息在脚本的顶部指定,包括完美的工作顺序的config.inc.php).我希望我不会错过任何明显的东西.
更新#1:
正如你们几个人所指出的那样,我实际上并没有调用mysql_query(因为我担心我会遗漏一些明显的东西,这些东西表明我的大脑没有在高水平运行).我接受了Gus的编辑并尝试了它们,修复了不平衡的大括号并添加了mysql_query()(正如Frank所提到的).这就是我所拥有的:
function mysql_insert_array($table, $response_array) {
foreach ($response_array as $field=>$value) {
$fields[] = '' . $field . '';
$values[] = "'" . mysql_real_escape_string($value) . "'";
}
$field_list = implode(',', $fields);
$value_list = implode(', ', $values);
$field_list = rtrim($fieldlist,",");
$value_list = rtrim($value_list,",");
$query = mysql_query("INSERT INTO `" . $table . "` (" . $field_list . ") VALUES (" . $value_list . ")");
if (!$query) {
$message = mysql_error();
die($message);
}
Run Code Online (Sandbox Code Playgroud)
}
if($ response_array [0] == 1){$ table ="payments_received"; mysql_insert_array($ table,$ response_array); 包括( 'receipt.php'); } else {include('decline.php'); }
我进一步,至少得到一个错误代码,这是...
您的SQL语法有错误; 检查与您的MySQL服务器版本对应的手册,以便在'0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15附近使用正确的语法, 16,17,18,19,20,21,22,23,24,25,26,27,28,29,'第1行
...我知道问题是尾随的逗号,但我今天仍然遇到这个问题并且尚未弄清楚如何在这种情况下摆脱那该死的额外逗号.想法?
到目前为止,谢谢大家的帮助.
更新#2
回答了我自己的问题.我使用了rtrim($ field_list,",")和rtrim($ value_list,",")并获得了成功的结果.请参阅UPDATE#1中的代码更新....或者不是!我刚刚意识到,当我粘贴上面的代码时,我已经在一个地方输入错误并忘记了field_list中的下划线...我将其添加回来并再次测试它并没有用.与上面的错误相同.然而,当错字仍然存在,代码工作,并完全符合我的要求.WTF!?
最终更新
我用下面的代码做了我想做的事.我在下面代码的第3行添加了`around $ field(我不知道该字符是什么叫).
function mysql_insert_array($table, $response_array) {
foreach ($response_array as $field=>$value) {
$fields[] = "$field";
$values[] = "'" . mysql_real_escape_string($value) . "'";
}
$field_list = implode(',', $fields);
$value_list = implode(', ', $values);
$field_list = rtrim($field_list,",");
echo "$field_list <br />";
$value_list = rtrim($value_list,",");
echo "$value_list <br />";
$query = mysql_query("INSERT INTO `" . $table . "` ($field_list) VALUES (" . $value_list . ")");
if (!$query) {
$message = mysql_error();
die($message);
}
Run Code Online (Sandbox Code Playgroud)
}
if($ response_array [0] == 1){$ table ="payments_received"; mysql_insert_array($ table,$ response_array); 包括( 'receipt.php'); } else {include('decline.php'); }
你没有实际执行$ query,就像使用mysql_query($ query);
:)
Ryan可能也是对的,但这就是为什么你的查询不起作用的原因 - 就PHP而言,你构建了查询,然后不打算用它做任何有效的事情.
编辑1:弗兰克?!男人,表达爱的方式.:)
但我开玩笑.你可以做几件事; 要么使用substr()来剪掉末尾的尾随逗号,然后附加一个; 在具有正常字符串连接的位置,或者为for()循环切换do while循环并添加有选择地删除","或";"的if子句 根据您的计数器是否等于源数组的大小减去1.
我亲自做了一个副词.
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |