我是 PHP 和 MySQL 查询构造的新手。我昨天问了一个关于列的类似问题,现在需要关于 VALUES 的帮助。我有一个大型处理器。一些字段是必需的,大多数字段是用户可选的。在我的例子中,HTML id 和 MySQL 列名是相同的。我找到了有关使用数组将 $_POST 转换为 INSERT INTO 的字段和值的教程,但我无法让它们工作 - 很多小时后。我已经退后一步,使用数组和变量制作了一个非常简单的 INSERT,但我仍然很难过。以下行起作用并将 5 个变量的值插入到具有 100 多列的数据库中。前 4 项是字符串,第 5 项,monthlyRental 是一个整数。
$colsx = array('country', 'stateProvince', 'city3', 'city3Geocode', 'monthlyRental');
$col_string = implode(',', $colsx);
$query = "INSERT INTO `$table` ($col_string) VALUES ( '$country', '$stateProvince', '$city3', '$city3Geocode', '$monthlyRental')";
按照这个想法,我使用预处理的变量来构造一个数组,然后将它内爆来创建一个字符串。
//these variables are "pre-processed", e.g., $country=$_POST['country'] and validated, but not yet mysql_real_escape_string
$valsx = array( '$country', '$stateProvince', '$city3', '$city3Geocode', '$monthlyRental' );
$val_string = implode(",", $valsx);
$query = "INSERT INTO `$table` ($col_string) VALUES ( $val_string )";
这没用。我尝试改变了很多东西,但没有任何结果。我使用此代码得到的 MySQL 错误是 - 'field list' 中的 Unknown column '$country' 它指的是 $valsx 数组中的 '$country',但我看不出这是一个字段列表,或者如何解决问题。
请具体提出建议。我对 MySQL 和 PHP 很陌生。
好的,根据 Iserni 的建议,这是当前代码。它不执行。我需要有关他的代码的帮助,并且我需要有关在何处以及如何放置错误消息的帮助。
$colsx = $fields = $valsx = $values = array();
$colsx = array('country', 'stateProvince', 'city3', 'city3Geocode', 'monthlyRental');
$col_string = implode(',', $colsx);
$valsx = array( "$country", "$stateProvince", "$city3", "$city3Geocode", "$monthlyRental" );
$val_string = implode(",", $valsx);
foreach($colsx as $col) {
$fields[] = $col;
if ( is_numeric($_POST[$col]) ) {
$values[] = mysql_real_escape_string($_POST[$col]);
}else{
$values[] = "'".mysql_real_escape_string($_POST[$col])."'";
}
}
$fields_sql = implode(',', $fields);
$values_sql = implode(',', $values);
$query = "INSERT INTO `$table` ($fields_sql) VALUES ($values_sql);"
if (!mysql_query($query,$conn))
{
die('<li class=error>an error occurred posting to the database. </li>'. mysql_error());
}