Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将数据放入数据库时出错_Php_Mysql_Sql_Types - Fatal编程技术网

Php 将数据放入数据库时出错

Php 将数据放入数据库时出错,php,mysql,sql,types,Php,Mysql,Sql,Types,我有以下php代码: foreach($html->find('dl[class=movie-info]') as $info) { for($i = 0; $i <= 20; $i++) { $contenido = $info->find('dt',$i)->plaintext; if($contenido == 'A&ntilde;o'){ $year = utf8_encode($info->find('d

我有以下php代码:

foreach($html->find('dl[class=movie-info]') as $info) {

   for($i = 0; $i <= 20; $i++) {

    $contenido = $info->find('dt',$i)->plaintext;

    if($contenido == 'A&ntilde;o'){
        $year = utf8_encode($info->find('dd',$i)->plaintext);}}}
所有内容都已插入,但当我尝试将
$year
插入类型为
smallint(5)unsigned
的ño时,不会发生任何事情,也不会创建任何行

如何将$year转换为数字(必须是数字)以填充该列?或者我需要更改列类型

PD:我现在正在学习“玩”mysql


谢谢

也许可以尝试将其强制转换为整数,而不是使用
utf8\u encode

$year = intval($info->find('dd',$i)->plaintext);
或者,除此之外:

$year = intval(utf8_encode($info->find('dd',$i)->plaintext));
你能给我们举个数据的例子吗

编辑:Damien是对的,intval()不应该有什么不同

请尝试回显内容,并确保它是字符串中的实际数字,以便进行一些调试:

if($contenido == 'A&ntilde;o'){
    $year = utf8_encode($info->find('dd',$i)->plaintext);
    echo $year.'<br />';}}}
if($contenido=='Añ;o'){
$year=utf8\u编码($info->find('dd',$i)->明文);
echo$year.“
;”}
在mysql中,进行查询时,数字和字符串之间没有区别。确保将列名包括在所有列的列表中:

mysqli_query($con,"INSERT INTO pablo (forum_id, calidad, titulo, caratula, sinopsis, pais, director, reparto, genero, year) VALUES ('$forum_id', '$calidad', '$titulo', '$img', '$sinopsis', '$pais', '$director', '$reparto', '$genero', '$year')");
                                                                                                                       ^notice year the column                                                                                             ^now the actual value

只需将列部分中的year替换为mysql列的名称即可。

在向StackOverflow发布问题之前,确定任何错误代码/错误消息,并将其与您的问题一起发布。

/* check connection */
if ( mysqli_connect_errno() ) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
以及:


有关的详细信息。

我认为您的问题在于您试图插入的值类型和数据:

A smallint is between -32768 and 32767 signed, or 0 and 65535 unsigned.

The (5) represents the display width of the field - if you will try to put 90000 you will be rejected.
在您的情况下,这不应该是一个问题(我假设年值),但请向我们显示您试图插入的数据

我猜您正在使用simple_html_dom解析某些内容-确保检索到的所有数据都是 正如您在将其插入数据库之前所期望的那样

另外:尝试将类型更改为int(5),现在告诉我们

更容易看到您使用的查询(年份)和数据样本

对于错误登录和显示,请使用:

 $execute = mysqli_query($con,"INSERT INTO pablo ( ....your query..... ")
       or
          printf("Errormessage: %s\n", mysqli_error($con)); 

玩得开心

你收到的MySQL错误是什么?没有显示错误,但认为有错误是合乎逻辑的,因为信息没有添加观看我的答案编辑以捕捉错误…信息是从filmaffinity.com/es电影页面中选择的,如view source:@minato这很好,但是回显它以调试脚本中实际得到的内容。问题是,当我输入“año”列和$year值时,该行没有添加…请向我们显示该代码。查看您的工作代码没有意义。至少,请给我们您的错误消息。@Damien也许这与
año
@Leng中的enye有关,是的,可能是这样。不确定。我已经将“año”改为“ano”,没有任何变化。这是我的simple_html_dom.php,这是我的application.php(我在这里获取数据并进行查询),这是filmaffinity的源代码。希望这是您询问的信息。添加这些行之后,我收到了这个错误,我不知道这是什么意思,这不是我们需要的——尝试添加
echo htmlentities($year)到您的FOR循环我怀疑您收到的数据不是年份值,或者它包含一些不需要的html实体(&gr;等)-还有一个指向目标页面的链接(tou parse可能会有所帮助)。另一种方法是使用
inval($year)
,PHP将尝试将字符串解析为其int值。此错误意味着您在试图传递的值附近的查询语法中有错误-我希望您是“在插入值之前转义所有值使用:
$thevalue=mysqli\u real\u escape\u string($con,$thevalue);
以转义可能打断您查询的特殊字符。对不起,我的错误,问题是删除了一个逗号…问题是“ñ”字符,它已更改为“n”,问题已解决,感谢lotI收到此错误,我不知道它是什么意思
A smallint is between -32768 and 32767 signed, or 0 and 65535 unsigned.

The (5) represents the display width of the field - if you will try to put 90000 you will be rejected.
 $execute = mysqli_query($con,"INSERT INTO pablo ( ....your query..... ")
       or
          printf("Errormessage: %s\n", mysqli_error($con));