我是准备陈述的新手,并试图让事情变得简单。
这是我的数据库表:
`unblocker_users` (
`uno` bigint(20) NOT NULL AUTO_INCREMENT,
`user_email` varchar(210) DEFAULT NULL,
`pw_hash` varchar(30) DEFAULT NULL,
`email_confirmed` tinyint(4) DEFAULT NULL,
`total_requests` bigint(20) DEFAULT NULL,
`today_date` date DEFAULT NULL,
`accessed_today` tinyint(4) DEFAULT NULL,)
这是我插入一些测试数据的功能
function add_new_user($e_mail1)
{
require_once "db.php";
// ####### Below line is giving an error ########
$stmt = $mysqli->prepare("INSERT INTO unblocker_users VALUES ("",?, ?,0,0,?,0)");
$stmt->bind_param('sss', $e_mail1, $this->genRandomString(1),$this->today_date());
$stmt->execute();
$stmt->close();
$done = $stmt->affected_rows;
return $done;
}
正如您在上面所看到的,我已经标记了给我一个错误的行。
错误为" Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in..."
我哪里出错了?
答案 0 :(得分:4)
此行可能会导致问题
$stmt = $mysqli->prepare("INSERT INTO unblocker_users VALUES ("",?, ?,0,0,?,0)");
看到你关闭并在值中再次打开字符串,将""
更改为''
这就是我能够快速浏览的所有内容。
答案 1 :(得分:3)
你有“带双引号的字符串.PHP认为
"INSERT INTO unblocker_users VALUES ("",?, ?,0,0,?,0)"
是2个字符串:
"INSERT INTO unblocker_users VALUES ("
",?, ?,0,0,?,0)"
但不是你想用它们做什么。
将外部引号更改为单引号,它应该有效:
'INSERT INTO unblocker_users VALUES ("",?, ?,0,0,?,0)'
答案 2 :(得分:3)
"INSERT INTO unblocker_users VALUES ("",?, ?,0,0,?,0)"
在php中,如果你想在双引号中使用双引号,你必须逃避内部引号
"INSERT INTO unblocker_users VALUES (\"\",?, ?,0,0,?,0)"
或者使用单引号作为外部...
'INSERT INTO unblocker_users VALUES ("",?, ?,0,0,?,0)'
...或内部引号
"INSERT INTO unblocker_users VALUES ('',?, ?,0,0,?,0)"
据我所知,mySQL无论如何都使用单引号