PHP脚本不将数据写入数据库

标签 php mysql

我从另一个 Stack Overflow 问题的答案中得到了这段代码 here .

我的数据库中有一个名为 track 的 mysql 表。

$server = "host";
$username = "user";
$password = "pass";
$database = "database";

$connId = mysql_connect($server,$username,$password) or die("Cannot connect to     server");
$selectDb = mysql_select_db($database,$connId) or die("Cannot connect to database");


$tracking_page_name="example";
$ref=$_SERVER['HTTP_REFERER'];
$agent=$_SERVER['HTTP_USER_AGENT'];
$ip=$_SERVER['REMOTE_ADDR'];
$host_name = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$strSQL = "INSERT INTO track (tm, ref, agent, ip, tracking_page_name, host_name)         VALUES(curdate(),'$ref','$agent','$ip','$tracking_page_name','$host_name')";
$test=mysql_query($strSQL);

基本上,我希望将此脚本收集的所有数据都放入我的数据库中。但是,无论我键入什么,即使我将变量更改为文本,也不会向数据库写入任何内容。我可以使用另一个脚本从数据库中读取数据,但我无法让这个脚本向数据库中添加任何信息。是否有我无法找到的拼写错误?

我只想要有关访问此页面的任何人的信息。

编辑:我试图填写一个名为“host_name”的字段,但在我的数据库中它有一个不同的名称。此处显示的原始脚本不会显示错误,而且我也没有运行检查以查看我的所有字段是否按顺序排列。那是错误。

最佳答案

多种可能性:

  1. 如果用户 user 对数据库或表具有读取权限但没有写入权限,读取操作将成功,但写入操作将失败。
  2. 如果这是一个 MyISAM 表,该表可能被另一个进程锁定。读操作可以,但写操作不行
  3. 也许您要写入的表或字段不存在或拼写错误

改变...

$test=mysql_query($strSQL);

为了...

if(!$test=mysql_query($strSQL)) die(mysql_error());

它会告诉你操作失败的原因(docs)。

此外,如果您刚开始,请不要使用 MySQL 函数。它们已从 PHP 中删除,因此您只是给自己将来做更多的工作。请改用 MySQLiPDO_MySQL ( docs )。

最后,永远不要只在 SQL 查询中插入从浏览器获得的文本。 $_SERVER['HTTP_REFERER']$_SERVER['HTTP_USER_AGENT'] 的值可以由您的用户操纵为任何内容,包括导致您执行的字符串用户想要的任何查询(删除你的表,泄露你的数据......)。了解准备好的语句参数化查询并改用它们

关于PHP脚本不将数据写入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38156234/

相关文章:

php - mysql总计和多行的差异

php - Laravel + Ratchet : Pushing notifications to specific clients

php - 在 MySQL 中创建短唯一 ID 的最佳方法

php - 订购系统 - mysql 中每个订单(不是行)的 ID 号

php - laravel/lumen-installer : guzzlehttp/guzzle locked at 6. 3.0 安装失败

javascript - 未捕获的语法错误 : Invalid or unexpected token for new line

php - 新的 parse.com php API - currentUser 不回馈用户

MySql WorkBench AES 256 解密

php - 如何在跟踪数据集更改的同时最好地构建数据库

php - sql 中的注册符号未正确显示