插入mysql无法正常工作

时间:2016-03-27 22:04:17

标签: php mysql

首先在这里发帖,并在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”行之前)才能工作。对误导性问题道歉。

4 个答案:

答案 0 :(得分:2)

这里有一个SQL错误:

$sql = "INSERT INTO testtable (data)
 VALUE ('".$val."')";

VALUE应为VALUES

当某些内容无法正常工作时,您应该始终检查错误(在这种情况下为mysql_error)。

此外,您不应再使用mysql扩展名。它已被弃用多年。查看mysqliPDO以获得更好,更安全的扩展程序。

答案 1 :(得分:2)

问题的事实 是您在以下位置调用了错误的变量:

$ins= mysql_query($test);

应该是$sql而不是$test

$ins= mysql_query($sql);

根据查询:

$sql = "INSERT INTO testtable (data)
 VALUE ('".$val."')";

其中VALUESVALUE在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 statementsPDO预备语句

<强>脚注:

mysql_*函数弃用通知:

http://www.php.net/manual/en/intro.mysql.php

从PHP 5.5.0开始,不推荐使用此扩展,不建议用于编写新代码,因为它将从PHP 7.0开始删除。相反,应使用mysqliPDO_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)

&#13;
&#13;
$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;
&#13;
&#13;