这里的第一篇文章和php编程新手。
我正在尝试将$val(2)插入到mysql数据库中。我的代码如下:
$username = "xxx";
$password = "xxx";
$hostname = "xxx";
$val= "2";
$connection=mysql_connect ($hostname, $username, $password)
or die("Unable to connect to MySQL");
$selected = mysql_select_db("database",$connection)
or die("Could not select examples");
$url = "http:xxxxxxxxxxxxx.com"; //url here
$str = file_get_contents($url);
$sql = "INSERT INTO testtable (data)
VALUE ('".$val."')";
$ins= mysql_query($test);
if(! $ins )
{
die('Could not insert: ' . mysql_error());
}
当我运行代码时,没有错误打印出来,但没有数据插入到表中。有人能指出问题吗。我将感谢你的帮助。
附录:
我没有包括以下行:
$url = "http:xxxxxxxxxxxxx.com"; //url here
$str = file_get_contents($url);
在我的第一篇帖子中。
真正的解决方案是改变:
$test to $sql
并注释掉下方的2行
file_get_content($url)
$str = file_get_contents($url);
这两行必须放在顶部($username="xxx"行之前)才能工作。为这个误导性的问题道歉。
这里有一个SQL错误:
$sql = "INSERT INTO testtable (data)
VALUE ('".$val."')";
VALUE
应该是VALUES
。
当某些东西不能按预期工作时,您应该始终检查错误(在本例中为mysql_error)。
此外,您不应该再使用mysql
扩展插件。它已被弃用多年。查看mysqli
或PDO
以获得更好、更安全的扩展。
事实是您在中调用了错误的变量
$ins= mysql_query($test);
应该是$sql
而不是$test
$ins= mysql_query($sql);
根据查询:
$sql = "INSERT INTO testtable (data)
VALUE ('".$val."')";
CCD_ 8和CCD_。有些人误以为它一定是VALUES
两者都有效
参考:
- http://dev.mysql.com/doc/refman/5.7/en/insert.html
来自手册:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name,...)]
[(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
错误报告会告诉您未定义的变量$test
。
将错误报告添加到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:显示错误只能在暂存中进行,而不能在生产中进行。
您当前的代码对SQL注入是开放的。将mysqli_*
与准备好的语句一起使用,或将PDO与准备好的报表一起使用
脚注:
mysql_*
功能弃用通知:
http://www.php.net/manual/en/intro.mysql.php
从PHP 5.5.0开始,该扩展已被弃用,不建议用于编写新代码,因为从PHP 7.0开始,它将被删除。相反,应该使用mysqli或PDO_MySQL扩展。另请参阅MySQL API概述以获取选择MySQL API时的进一步帮助。
这些函数允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/.
MySQL文档可在»http://dev.mysql.com/doc/.
尝试更新INSERT方法,如下所示(您错过了"VALUE"末尾的"S"):
$sql = "INSERT INTO testtable(data) VALUES ('".$val."')";
另一方面,请注意下面的行中有不同的变量,您可以使用"slq"而不是"test",如下所示:
$ins= mysql_query($sql);
有关更多信息,请参阅PHP将数据插入MySQL。
希望这能帮助。。。
$username = "xxx";
$password = "xxx";
$hostname = "xxx";
$val= "2";
$connection=mysql_connect ($hostname, $username, $password)
or die("Unable to connect to MySQL");
$selected = mysql_select_db("database",$connection)
or die("Could not select examples");
$sql = "INSERT INTO testtable (data)
VALUES ('".$val."')";
$ins= mysql_query($sql);
if(! $ins )
{
die('Could not insert: ' . mysql_error());
}