Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL内部for循环。Insert仅在第一个循环上运行_Php_Mysql_Arrays_For Loop - Fatal编程技术网

Php MySQL内部for循环。Insert仅在第一个循环上运行

Php MySQL内部for循环。Insert仅在第一个循环上运行,php,mysql,arrays,for-loop,Php,Mysql,Arrays,For Loop,我创建了一个for循环,该循环遍历数组或从字符串分解的单词。for循环可以工作,并且已经通过echo语句进行了测试。运行此代码时,它只向数据库中插入1条记录,而不是数组中的字符串数 $item=explode(" ", $items); for ($i = 0; $i < count($item); ++$i) { // Create connection $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); //

我创建了一个for循环,该循环遍历数组或从字符串分解的单词。for循环可以工作,并且已经通过echo语句进行了测试。运行此代码时,它只向数据库中插入1条记录,而不是数组中的字符串数

$item=explode(" ", $items);
for ($i = 0; $i < count($item); ++$i) {
    // Create connection
$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO invlog (itemid, qty)
VALUES ('".$item[$i]."', '-1')";

if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);    
    }
$item=分解(“,$items”);
对于($i=0;$i<计数($item);++$i){
//创建连接
$conn=mysqli_connect($dbhost、$dbuser、$dbpass、$dbname);
//检查连接
如果(!$conn){
die(“连接失败:”.mysqli_connect_error());
}
$sql=“插入到invlog中(项目ID,数量)
值(“$item[$i]”、“-1”);
if(mysqli_查询($conn,$sql)){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.
“.mysqli_Error($conn); } mysqli_close($conn); }
为了提高效率并避免多次数据库调用,您实际上应该只执行一次statemnt

所以循环,创建查询,然后执行它

就这样

$item=explode(" ", $items);
$query="";
 for ($i = 0; $i < count($item); ++$i) {
  // Build Query 
  $query.="(".$item[$i].",-1),";
 }
 $query = rtrim($query); // Remove last trailing comma from the right hand side of query string

 //Connect to database, and do DB stuff outside of loop in one call
 $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
 // Check connection
 if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
 }
 $sql = "INSERT INTO invlog (itemid, qty)
 VALUES ".$query;

  if (mysqli_query($conn, $sql)) {
    echo "New records created successfully";
  } else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
  }

  mysqli_close($conn);    
$item=分解(“,$items”);
$query=“”;
对于($i=0;$i<计数($item);++$i){
//生成查询
$query.=“(“$item[$i]”,-1),”;
}
$query=rtrim($query);//从查询字符串的右侧删除最后一个尾随逗号
//连接到数据库,并在一次调用中执行循环外的DB操作
$conn=mysqli_connect($dbhost、$dbuser、$dbpass、$dbname);
//检查连接
如果(!$conn){
die(“连接失败:”.mysqli_connect_error());
}
$sql=“插入到invlog中(项目ID,数量)
值查询;
if(mysqli_查询($conn,$sql)){
回显“成功创建新记录”;
}否则{
echo“Error:”.$sql.
“.mysqli_Error($conn); } mysqli_close($conn);
$replacer=array(“\r\n”、“\n”、“\r”、“\t”、”);
$items=str_replace($replacer,“,$items);
$item=分解(“,$items”);
//创建连接
$conn=mysqli_connect($dbhost、$dbuser、$dbpass、$dbname);
//检查连接
如果(!$conn){
die(“连接失败:”.mysqli_connect_error());
}
对于($i=0;$i<计数($item);++$i){
$sql=“插入到invlog中(项目ID,数量)
值(“$item[$i]”、“-1”);
if(mysqli_查询($conn,$sql)){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.
“.mysqli_Error($conn); } } mysqli_close($conn);
sidenote:为什么不在循环之前将该连接取出。无需连接/关闭每个迭代—您会收到一条错误消息,还是它似乎在无声地失败?像这样连接和关闭每个迭代是荒谬的。没有错误。我也曾多次尝试将close和conn移动到外部,但仍然保持相同issues@chuckbeyor
$items
包含哪些内容?你也应该把它贴在问题里。如果其中有一个词被引用,那么你的问题就完蛋了。您应该绑定它们;检查与您的MySQL服务器版本对应的手册,以了解在“4321 9876 6543,-1)”附近使用的正确语法,仍然可以使用逗号there@chuckbeyor如果你看这个,它不是真的爆炸了<代码>'4321 9876 6543,-1),'这些数字仍然用空格连接。您还应该在问题中加入
var\u dump($item)
。只需使用
rtrim($query,“,”)
就可以了,这是它所做的查询(itemid,qty)值(1234432198766543,-1)。我有一个问题。如果这些文件是在文本区域提交的,并且每个文件都在一个新的行上,这可能是一个问题吗?
$replacer  = array("\r\n", "\n", "\r", "\t", "  ");
$items = str_replace($replacer, " ", $items);
$item=explode(" ", $items);
// Create connection
$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}


for ($i = 0; $i < count($item); ++$i) {

$sql = "INSERT INTO invlog (itemid, qty)
VALUES ('".$item[$i]."', '-1')";

if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}


    }
    mysqli_close($conn);