首先在这里发帖,并在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”行之前)才能工作。对误导性问题道歉。
答案 0 :(得分:2)
这里有一个SQL错误:
$sql = "INSERT INTO testtable (data)
VALUE ('".$val."')";
VALUE
应为VALUES
。
当某些内容无法正常工作时,您应该始终检查错误(在这种情况下为mysql_error)。
答案 1 :(得分:2)
问题的事实 是您在以下位置调用了错误的变量:
$ins= mysql_query($test);
应该是$sql
而不是$test
$ins= mysql_query($sql);
根据查询:
$sql = "INSERT INTO testtable (data)
VALUE ('".$val."')";
其中VALUES
和VALUE
在MySQL中都有效。有些人误以为必须VALUES
。 两者都有效。
参考:
从手册:
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
。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
您目前的代码向SQL injection开放。使用mysqli_*
with prepared statements或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 Overview以获得进一步的帮助。
这些功能允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/。
可以在»http://dev.mysql.com/doc/找到MySQL的文档。
答案 2 :(得分:1)
尝试更新您的INSERT方法,如下所示(您在“VALUE”结尾处错过了“S”):
$sql = "INSERT INTO testtable(data) VALUES ('".$val."')";
另一方面请注意下面的行中有不同的变量,您可以使用“slq”代替“test”,如下所示:
$ins= mysql_query($sql);
有关详细信息,请查看PHP Insert Data Into MySQL。
希望这会有所帮助......
答案 3 :(得分:0)
$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());
}
&#13;