我正在尝试将一些数据插入 MySqli
I'm Trying to insert some Data into MySqli
我在向 mysqli 中插入一些数据时遇到问题
我尝试了所有相同的问题我不知道出了什么问题
这是代码
$mysqli = new mysqli("localhost", "root", "root", "root");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
function data($url, $items){
$domain = parse_url($url, PHP_URL_HOST);
switch($domain){
case 'test':
foreach($items as $item){
$tmp = explode("/", $item['link']);
$arr = array(1,2,3,4,5,6,7,8,9,0);
$author = ucwords(str_replace($arr, '', str_replace('-', ' ', $tmp[4])));
$description = strip_tags($item['description']);
$source = "Quoteee";
$img = "";
$date = date();
$sql = "INSERT INTO quote (id, quote, author, source, img, date, activated) VALUES
(NULL, '".$quote."', '".$author."', '".$source."', '".$img."', '".$date."', 1)";
$insert_row = $mysqli->query($sql);
if($insert_row){
print 'Success! ID of last inserted record is : ' .$mysqli->insert_id .'<br />';
}else{
die('Error : ('. $mysqli->errno .') '. $mysqli->error);
}
}
break;
}
}
你每次都插入一个 NULL id,我怀疑这是问题所在。
如果 id 是自动递增的,那么只需将其从插入查询中删除即可。
查询可能失败,因为该字段在数据库中设置为 NOT NULL
$sql = "INSERT INTO quote (quote, author, source, img, date, activated) VALUES ('".$quote."', '".$author."', '".$source."', '".$img."', '".$date."', 1)";
只需重读所有代码,发现您在函数之外初始化了 mysql 连接。要解决此问题,您应该将初始化移到您的函数中:
function data($url, $items){
$mysqli = new mysqli("localhost", "root", "root", "root");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
} else {
$domain = parse_url($url, PHP_URL_HOST);
switch($domain){
...
或者您可以尝试像这样调用全局变量:
function data($url, $items){
global $mysqli;
...
但我更喜欢第一种变体。
而我开始的部分将帮助您避免 sql 注入并使代码更加清晰易读:
$stmt = $mysqli->prepare("INSERT INTO quote (quote, author, source, img, date, activated) VALUES ( ?, ?, ?, ?, ?, 1)");
$stmt->bind_param('sssss', $quote, $author, $source, $img, date("Y-m-d H:i:s", $date));
$stmt->execute();
$insert_row = $stmt->affected_rows;
if($insert_row){
mysql 数据库对象应该在函数数据的范围内。
将变量用作全局变量或将其放在函数中
我在向 mysqli 中插入一些数据时遇到问题 我尝试了所有相同的问题我不知道出了什么问题 这是代码
$mysqli = new mysqli("localhost", "root", "root", "root");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
function data($url, $items){
$domain = parse_url($url, PHP_URL_HOST);
switch($domain){
case 'test':
foreach($items as $item){
$tmp = explode("/", $item['link']);
$arr = array(1,2,3,4,5,6,7,8,9,0);
$author = ucwords(str_replace($arr, '', str_replace('-', ' ', $tmp[4])));
$description = strip_tags($item['description']);
$source = "Quoteee";
$img = "";
$date = date();
$sql = "INSERT INTO quote (id, quote, author, source, img, date, activated) VALUES
(NULL, '".$quote."', '".$author."', '".$source."', '".$img."', '".$date."', 1)";
$insert_row = $mysqli->query($sql);
if($insert_row){
print 'Success! ID of last inserted record is : ' .$mysqli->insert_id .'<br />';
}else{
die('Error : ('. $mysqli->errno .') '. $mysqli->error);
}
}
break;
}
}
你每次都插入一个 NULL id,我怀疑这是问题所在。
如果 id 是自动递增的,那么只需将其从插入查询中删除即可。
查询可能失败,因为该字段在数据库中设置为 NOT NULL
$sql = "INSERT INTO quote (quote, author, source, img, date, activated) VALUES ('".$quote."', '".$author."', '".$source."', '".$img."', '".$date."', 1)";
只需重读所有代码,发现您在函数之外初始化了 mysql 连接。要解决此问题,您应该将初始化移到您的函数中:
function data($url, $items){
$mysqli = new mysqli("localhost", "root", "root", "root");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
} else {
$domain = parse_url($url, PHP_URL_HOST);
switch($domain){
...
或者您可以尝试像这样调用全局变量:
function data($url, $items){
global $mysqli;
...
但我更喜欢第一种变体。
而我开始的部分将帮助您避免 sql 注入并使代码更加清晰易读:
$stmt = $mysqli->prepare("INSERT INTO quote (quote, author, source, img, date, activated) VALUES ( ?, ?, ?, ?, ?, 1)");
$stmt->bind_param('sssss', $quote, $author, $source, $img, date("Y-m-d H:i:s", $date));
$stmt->execute();
$insert_row = $stmt->affected_rows;
if($insert_row){
mysql 数据库对象应该在函数数据的范围内。
将变量用作全局变量或将其放在函数中