为什么我的查询不起作用?
<?php
$str = 'test1:val1,test2:val2,test3:val3'
$ex1 = explode(',',$str);
while(list($key,$val) = each($ex1)){
$dat = explode(':',$val);
$qry = mysqli_query("INSERT INTO table SET field1 = '".$dat[0]."', field2 = '".$dat[1]."'");
}
if($qry){
echo 'success';
}else{
die(mysqli_error($con));
}
?>
如果我尝试回显$dat[0]
和$dat[1]
,输出就可以了,但我的查询无效?
答案 0 :(得分:2)
如果您的数据库在同一个数据库中被称为allotbl,那么您的INSERT应如下所示:
mysqli_query($con,"INSERT INTO allotbl SET field1 = '".$dat[0]."', field2 = '".$dat[1]."'");
其中$con
是您定义的数据库连接,例如:
$con=mysqli_connect("localhost","my_user","my_password","my_db");
您还应该将if else语句放入循环中以检查查询。所以整个脚本看起来像这样:
<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");
$str = 'test1:val1,test2:val2,test3:val3'
$ex1 = explode(',',$str);
while(list($key,$val) = each($ex1)){
$dat = explode(':',$val);
$qry = mysqli_query($con,"INSERT INTO allotbl SET field1 = '".$dat[0]."', field2 = '".$dat[1]."'");
if($qry){
echo 'success';
}else{
die(mysqli_error($con));
}
}
?>
答案 1 :(得分:1)
如果您有正确的数据库连接,可能会有3种类型的问题 mysql_connect和mysql_select_db。
没有mysql_connect和mysql_select_db,您无法对任何表执行任何查询。
Ist:之后你没有使用分号 $ str ='test1:val1,test2:val2,test3:val3'
IInd:如果你想检查if($ qry){}条件。你应该在条件循环中实现它。
IIIrd:你检查你是否达到了条件 与
<?php
$str = 'test1:val1,test2:val2,test3:val3';
$ex1 = explode(',',$str);
while(list($key,$val) = each($ex1)){
$dat = explode(':',$val);
echo "INSERT INTO table SET field1 = '".$dat[0]."', field2 = '".$dat[1]."'"."<br>";
}
if($qry){
echo 'success';
}else{
die(mysqli_error($con));
}
?>
答案 2 :(得分:1)
它不起作用的一个问题是因为函数mysqli_query
(程序接口)需要第一个参数作为连接对象:
mysqli_query($connection_object, 'THEN THE QUERY');
现在查看你的代码,它没有代码,你需要把它放在那里:
$connect = mysqli_connect('localhost', 'username', 'password', 'database name');
$str = 'test1:val1,test2:val2,test3:val3';
$ex1 = explode(',',$str);
while(list($key, $val) = each($ex1)){
list($k, $v) = explode(':', $val);
$query = mysqli_query($connect, "INSERT INTO `table` SET `field1` = '{$k}', `field2` = '{$v}'") or die($connect->error);
}
旁注:
和往常一样,在编码时,不要在黑暗中调试(或死机的白屏),总是打开错误报告:
error_reporting(E_ALL); // put me on top of PHP file
ini_set('display_errors', '1');