Php 将数据放入数据库时出错
我有以下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ño'){ $year = utf8_encode($info->find('d
foreach($html->find('dl[class=movie-info]') as $info) {
for($i = 0; $i <= 20; $i++) {
$contenido = $info->find('dt',$i)->plaintext;
if($contenido == 'Añ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ñ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));