这似乎是使用准备好的语句和MYSQLi将信息简单地插入数据库中,但只有在将数据插入旧庄园(不安全)的情况下,我才会得到结果:
$write = mysql_query("INSERT INTO stats VALUES('','$pagename','$network','$duration','$statvote','',INET_ATON('$ip'),NOW())");
我正在使用:
服务器版本:5.6.43-MySQL社区服务器(GPL) PHP版本5.6.40 已启用API扩展mysql,mysqli,pdo_mysql
我确保存在MYSQLi:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Yes we have it!';
}
....,并在命令行中使用以下命令进行检查:
php -m | grep -i mysql
并收到:
mysql
mysqli
mysqlnd
pod_mysql
我成功连接了。
// Create connection
// servername username PW dbname
$conn = new mysqli(localhost, ***************, ***********, ************);
// Check connection
//if (mysqli_connect_error()) { echo mysqli_connect_error(); exit;}
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
插入记录的主要代码是:
// Test variables
$pagename= 'Test';
$network = 'MMM';
$duration = 60;
$statvote = 1;
$username = 'star';
$ip = $_SERVER['REMOTE_ADDR']; ///gets visitor IP address
// the ??????? below are parameter markers used for variable binding..this is a Template
$write = "INSERT INTO stats (showname,network,duration,vote,username,ip,timevoted) VALUES(?,?,?,?,?,INET_ATON(?),NOW())";
//prepare
$stmt = $conn->prepare($write);
// Bind
$stmt-> bind_param("ssiisss",$pagename,$network,$duration,$statvote,$username,INET_ATON($ip),NOW());
$stmt->execute();
$stmt->close();
$conn->close();
我希望将一条记录放置到数据库的末尾,但是我没有收到任何错误消息($ stmt-> error和mysqli_error($ stmt),..几乎就像代码不在那儿一样。我已经检查了该站点,并且看到了我认为是解决方案的讨论,例如在准备好的语句中不包括“ Id”,在准备好的语句中使用INET_ATON(?),并确保变量类型正确(s,i,d, b)。但是我的结果是一样的。
我的特定代码还有其他问题吗?
谢谢