Php 插入多个IP地址';输入数据库
使用cURL以127.0.0.1:8080格式将多个IP地址(代理)插入数据库时遇到问题 我可以使用print_r($proxies)在PHP中显示数据,但在保存到数据库时,我只能保存IP地址的前3个值,其他什么都不能保存 我只想在数据库中以127.0.0.1:8080等格式保存代理,但我只得到插入的IP地址的第一个值,(1,12,127)等,而不是(127.0.0.1:8080) 在我使用的数据库中创建表/列时Php 插入多个IP地址';输入数据库,php,mysql,arrays,curl,Php,Mysql,Arrays,Curl,使用cURL以127.0.0.1:8080格式将多个IP地址(代理)插入数据库时遇到问题 我可以使用print_r($proxies)在PHP中显示数据,但在保存到数据库时,我只能保存IP地址的前3个值,其他什么都不能保存 我只想在数据库中以127.0.0.1:8080等格式保存代理,但我只得到插入的IP地址的第一个值,(1,12,127)等,而不是(127.0.0.1:8080) 在我使用的数据库中创建表/列时 表名:socks5 列名:代理 类型:int(20) 属性:无符号 这是我的密
- 表名:socks5
- 列名:代理
- 类型:int(20)
- 属性:无符号
<?php
require_once __DIR__ . '/lib/dblibary.class.php';
$app = new DBLib;
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozillia/5.0');
$proxies = array();
$start_count = 1;
$end_count = 10;
for($i = $start_count; $i <= $end_count; $i++) {
curl_setopt($curl, CURLOPT_URL, "https://www.my-proxy.com/free-proxy-list-$i.html");
$result = curl_exec($curl);
preg_match_all("!\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}:\d{2,4}!",$result,$matches);
foreach($matches[0] as $match) {
$proxies = $app->GrabProxy($match);
}
}
curl_close($curl);
//Display the proxies within HTML(This works and displays IP & Port)
//echo '<pre>'; print_r($proxies); echo '</pre>';
我真的非常感谢你在这方面的帮助。
谢谢。您是否尝试将列类型改为varchar(200)而不是int 在绑定中,您使用的是
PDO::PARAM_INT
——因为这只适用于整数,所以它只接受第一组数字。应该是PDO::PARAM_STR
(也假设列定义为字符字段)。非常感谢!,我不知道我脑子里在想什么。这是一个简单的解决方法!!。我照你说的做了,再次使用VARCHAR(255)创建了表/列,并将bind更改为PDO::PARAM_STRdon。我不会将字符串存储为整数,而是将字符串存储为字符串(mysql有几种字符串类型,如MEDIUMTEXT、check),还读取-整数是数字,而不是字符串首先-错误给了你mysql什么?为什么不能添加更多-如果出现错误,请第二次显示-不要在循环中运行add,将所有IP放入一个数组,使此数组唯一且通用-int表示只存储数字,但是IP地址是一个字符串,如果你想把它存储为数字,那么你必须把它分成4组数字和分号,就像portI之前做的那样,而且它是有效的。我还将dblibary.class.php文件中的绑定从PDO::PARAM_INT
更改为PDO::PARAM_STR
。
public function GrabProxy($match) {
try {
$db = DB();
$query = $db->prepare("INSERT INTO socks5 (proxies) VALUES (:proxies)");
$query->bindParam("proxies", $match, PDO::PARAM_INT);
$query->execute();
if ($query->rowCount() > 0) {
return true;
}
}
catch(PDOException $e) {
exit($e->getMessage());
}
}