我有以下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('dd',$i)->plaintext);}}}
(如果功能,代码有更多)
还有一个mysql表,我把变量的内容放在哪里....
问题在于$ year内容,我需要用smallint(5)无符号填充它。
当我使用
时$con = mysqli_connect("localhost","root","tdguchiha","phpbb3");
mysqli_query($con,"INSERT INTO pablo (forum_id, calidad, titulo, caratula, sinopsis, pais, director, reparto, genero) VALUES ('$forum_id', '$calidad', '$titulo', '$img', '$sinopsis', '$pais', '$director', '$reparto', '$genero')");
mysqli_close($con);
插入了所有内容,但是当我尝试将$year
插入类型为smallint(5) unsigned
的año时没有任何反应,则不会创建任何行...
如何将$ year转换为数字(必须是数字)才能填入该列?或者我需要更改列类型?
PD:我现在正在学习使用mysql“玩”谢谢
答案 0 :(得分:0)
也许尝试将其转换为整数,而不是使用utf8_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 />';}}}
答案 1 :(得分:0)
进行查询时,数字和字符串之间的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列的名称即可。
答案 2 :(得分:0)
在向StackOverflow发布问题之前,会识别所有错误代码/错误消息并将其与您的问题一起发布:
/* check connection */
if ( mysqli_connect_errno() ) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
和
if ( ! mysqli_query( $link, "SELECT ..." )) {
printf("Errorcode: %d\n", mysqli_errno($link));
}
有关PHP doc site的更多信息。
答案 3 :(得分:0)
我认为您的问题在于您要插入的值类型和数据:
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));
玩得开心