我借用了这个代码,它将字符串(用户,消息)作为数据库中的字符串输入到shoutbox表中
function insertMessage($user, $message){
$query = sprintf("INSERT INTO shoutbox(user, message) VALUES('%s', '%s');",
mysql_real_escape_string(strip_tags($user)),
mysql_real_escape_string(strip_tags($message))
);
但是,我正在更改数据并实际插入几种不同的数据类型(即在数据库中它们将是“strings”和“tinyint”)。现在将使用这些许多不同的_POST值调用函数insertMessage
echo insertMessage(
$_POST['drafting'],
$_POST['advocacy'],
$_POST['interview'],
$_POST['letter'],
$_POST['solicitor'],
$_POST['barrister'],
$_POST['instructor'],
$_POST['secret']
);
- 起草,宣传,访谈,信函,律师,律师作为“tinyint”进入数据库,并需要intval调用它们使它们成为整数
- 讲师和秘密都以“字符串”
进入数据库我的问题是
a)如何在转义字符串的同时将tinyint数据(以及对其调用intval)与字符串混合
b)有没有办法在不构建超长插入语句的情况下执行此操作
答案 0 :(得分:1)
您无需在值上调用intval()
,mysql_real_escape_string()
也可以处理数字(请确保继续引用它们)。
答案 1 :(得分:1)
PHP 5.2.0+具有可配置的filter extension,可以提供帮助。
<?php
$sql_int = array(
'filter' => FILTER_SANITIZE_NUMBER_INT
);
$sql_string = array(
'filter' => FILTER_CALLBACK,
'options' => 'mysql_real_escape_string'
);
echo inputMessage(filter_input_array(INPUT_POST, array(
'drafting' => $sql_int,
'advocacy' => $sql_int,
'interview' => $sql_int,
'letter' => $sql_int,
'solicitor' => $sql_int,
'barrister' => $sql_int,
'instructor' => $sql_string,
'secret' => $sql_string
)));
function inputMessage(array $input) {
...
答案 2 :(得分:0)
你的功能接受2个参数,你喂它8个?那不行。
答案 3 :(得分:0)
你可以使用这样的简单函数(或方法),它可以用于简单的插入。它将转义值并处理空值。它虽然无法处理函数(例如sha1(value))
<?php
function insertArray( $table, $data, $dbConn ) {
$keys = array_keys( $data );
foreach( $data as &$val ) {
if( is_null( $val ) ) {
$val = 'NULL';
} else {
$val = "'".mysql_real_escape_string( $val )."'";
}
}
unset( $val );
$sql = sprintf(
'INSERT INTO `%s` (`%s`) VALUES (%s)',
$table,
implode( '`, `', $keys ),
implode( ', ', $data )
);
//you probably want to handle errors here
mysql_query( $sql, $dbConn );
return mysql_insert_id( $dbConn );
}
//Example
$newId = insertArray(
'my_table',
array(
'drafting' => $_POST['drafting'],
'advocacy' => $_POST['advocacy'],
'interview' => $_POST['interview'],
'letter' => $_POST['letter'],
'solicitor' => $_POST['solicitor'],
'barrister' => $_POST['barrister'],
'instructor' => $_POST['instructor'],
'secret' => $_POST['secret']
),
$dbConnection
);