我已经编辑了我的问题,现在我得到了关于检查MySQL设置的错误。我将$sql\\u dvalues变量更改为具有值的数组,而不是逗号分隔的值,现在它显示以下内容:
WordPress database error: [您的SQL语法有错误;请查看与您的MySQL server版本相对应的手册,以了解第3行“”附近要使用的正确语法]
在wp\\U efpd\\U gmaps(时间、名称、地址、描述、标题)中插入值(\'2011-10-30 08:48:32\',\'test\',\'tedst\',\'tedst\',\'tedst\'),
我使用的原因$wpdb->prepare()
是因为我读了这一页:http://codex.wordpress.org/Class_Reference/wpdb 标题下Protect Queries Against SQL Injection Attacks
但也许我读错了,不需要用它?我不确定,如果你能给我一些建议,我将不胜感激。
较旧的便笺(&H);代码:我已经设置了一种方法,可以在不需要了解SQL的情况下,将内容添加到WP数据库中,这有点简单,我遇到了一个问题。查询代码输出良好(请参见下面的代码,die($str);
) 但是,每当我试图通过添加一些数据来实际测试它时,它会给我以下错误:
WordPress database error: [查询为空]
它在某一点上工作,但没有插入任何数据,并给了我一个不同的错误,告诉我检查MySQL设置或之后要使用什么;,我真的不记得那是怎么说的,但我想先解决这个问题。
这是我在类中的函数Efpd2
public function efpd_prepare_db($data=array(),$table_name) {
global $wpdb;
$table_name = $wpdb->prefix.$table_name;
$datenow = date(\'Y\\-m\\-d H\\:i\\:s\');
$sql_values = \'time, \';
$sql_cvalues = \'%s, \';
$sql_dvalues = array($datenow);
$int=0; $dcount = count($data);
foreach($data as $dat){
$int++;
$sql_values .= $dat[\'name\'];
if($int!=$dcount){
$sql_values .= ", ";
}
$sql_cvalue .= $dat[\'type\'];
switch($dat[\'type\']){
case \'txt\': $sql_cvalues .= \'%s\'; break;
case \'num\': $sql_cvalues .= \'%d\'; break;
case \'float\': $sql_cvalues .= \'%f\'; break;
default: die(\'Error writing to database, wrong value type. Use \\\'num\\\', \\\'float\\\' or \\\'txt\\\'.\');
}
if($int!=$dcount){
$sql_cvalues .= ", ";
}
array_push($sql_dvalues,$dat[\'value\']);
}
$str = "
INSERT INTO $table_name
( $sql_values )
VALUES ( $sql_cvalues ),
$sql_dvalues
";
// For debugging, use this: die($str);
//die($str);
$wpdb->show_errors();
$wpdb->query( $wpdb->prepare(
"
INSERT INTO $table_name
( $sql_values )
VALUES ( $sql_cvalues ),
",
$sql_dvalues
) );
}
以及我用来添加数据的代码:
function add_sample_data(){
$efpd = Efpd2::efpd_prepare_db(
array(
0 => array(
\'name\' => \'name\', // Name of the variable inside the table
\'value\' => \'test\', // Value to add
\'type\' => \'txt\' // Type of data to be added (\'num\' = %d, \'txt\' = %s, \'float\' = %f). See $wpdb->prepare() documentation on codex.wordpress.org
),
1 => array(
\'name\' => \'address\',
\'value\' => \'tedst\',
\'type\' => \'txt\'
),
2 => array(
\'name\' => \'description\',
\'value\' => \'tedst\',
\'type\' => \'txt\'
),
3 => array(
\'name\' => \'title\',
\'value\' => \'tedst\',
\'type\' => \'txt\'
)
),
\'efpd_gmaps\'); // Table to add data to
unset($efpd);
}
add_action(\'init\',\'add_sample_data\');
这是使用
die($str);
在里面
Efpd2::efpd_prepare_db()
:
在wp\\U efpd\\U gmaps(时间、名称、地址、描述、标题)中插入值(%s,%s,%s,%s,%s,%s),“2011-10-30 07:27:53”,“测试”,“tedst”,“tedst”,“tedst”