Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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
查询在phpMyAdmin中工作,而不是在php中工作-您的SQL语法中有一个错误;_Php_Mysql - Fatal编程技术网

查询在phpMyAdmin中工作,而不是在php中工作-您的SQL语法中有一个错误;

查询在phpMyAdmin中工作,而不是在php中工作-您的SQL语法中有一个错误;,php,mysql,Php,Mysql,我有一个简单的查询,可以在phpMyAdmin中运行,但不能通过mysqli\u查询: $update_sql = " UPDATE db SET db.period = ('January-2017') WHERE db.column between '2016-12-16' and '2017/01/29'; UPDATE db SET db.period = ('February-2017') WHERE db.column between '2017-01-30' and '2017/0

我有一个简单的查询,可以在phpMyAdmin中运行,但不能通过
mysqli\u查询

$update_sql = "
UPDATE db SET db.period = ('January-2017') WHERE db.column between '2016-12-16' and '2017/01/29';
UPDATE db SET db.period = ('February-2017') WHERE db.column between '2017-01-30' and '2017/02/26';
";

echo '<p>'.$update_sql.'</p>';

$result_mysqli_query=mysqli_query($link,$update_sql);
if(! $result_mysqli_query) {
    die("SQL Error: " . mysqli_error($link));
}

我试着用“`”来包围字段名,将echo语句的输出复制到PHP,看看生成的字符串是否工作相同,但仍然没有乐趣。

有不止一个问题,例如,您想在这里更新什么:

db.period = ('January-2017')
此处
db.period
的数据类型和条件是什么:

WHERE db.column between '2016-12-16' and '2017/01/29';

这里您使用的是两种不同的
日期格式
。解决这些问题,然后再次运行查询。

我认为您的第二个更新行包含多余的分号

试试这个简单的测试——它对单个更新行有效吗

$update_sql = "UPDATE db SET db.period = ('February-2017') WHERE db.column between '2017-01-30' and '2017/02/26'";

echo '<p>'.$update_sql.'</p>';

$result_mysqli_query=mysqli_query($link,$update_sql);
if(! $result_mysqli_query) {
    die("SQL Error: " . mysqli_error($link));
}
$update_sql=“update db SET db.period=('2017年2月'),其中db.column介于'2017-01-30'和'2017/02/26'之间;
回显“”.$update_sql.

”; $result\u mysqli\u query=mysqli\u query($link,$update\u sql); if(!$result\u mysqli\u查询){ die(“SQL错误:.mysqli_错误($link)); }
mysqli\u multi\u query()不是mysqli\u query() 根据@Lawrence Cherone的评论,对于其他任何人来说,这其实很简单——使用mysqli_multi_query()而不是mysqli_query()

$update\u sql=”
更新数据库集db.period=('2017年1月'),其中db.column介于'2016-12-16'和'2017/01/29'之间;
更新数据库集db.period=('2017年2月'),其中db.column介于'2017-01-30'和'2017/02/26'之间;
";
回显“”.$update_sql.

”; $result\u mysqli\u query=mysqli\u multi\u query($link,$update\u sql); if(!$result\u mysqli\u查询){ die(“SQL错误:.mysqli_错误($link)); }
您需要对多个查询使用mysqli\u multi\u query,不过如果您将它们拆分会更好。可以逐个执行查询来解决您的问题。。。然后执行一个other@LawrenceCherone解决方案是mysqli_multi_query(),谢谢!“查询工作…”-一个查询-是,两个查询-否。即使在phpMyAdmin中,它们也是两个查询(phpMyAdmin在每个查询之后显示执行结果)。对数据库执行查询。谢谢您的回答,您是对的!在本例中,db.period是日期格式,但我试图将period列设置为字符串(varchar)。另外,对于两种不同的日期格式,这只是我复制到SO的一个错误。修那些恐怕不能解决问题!
$update_sql = "UPDATE db SET db.period = ('February-2017') WHERE db.column between '2017-01-30' and '2017/02/26'";

echo '<p>'.$update_sql.'</p>';

$result_mysqli_query=mysqli_query($link,$update_sql);
if(! $result_mysqli_query) {
    die("SQL Error: " . mysqli_error($link));
}
$update_sql = "
UPDATE db SET db.period = ('January-2017') WHERE db.column between '2016-12-16' and '2017/01/29';
UPDATE db SET db.period = ('February-2017') WHERE db.column between '2017-01-30' and '2017/02/26';
";

echo '<p>'.$update_sql.'</p>';

$result_mysqli_query=mysqli_multi_query($link,$update_sql);
if(! $result_mysqli_query) {
    die("SQL Error: " . mysqli_error($link));
}