Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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/7/sql-server/22.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 MySQLi语句的函数对数据库不做任何操作_Php_Mysql_Mysqli - Fatal编程技术网

Php MySQLi语句的函数对数据库不做任何操作

Php MySQLi语句的函数对数据库不做任何操作,php,mysql,mysqli,Php,Mysql,Mysqli,我有以下PHP代码: <?php $email = 'email@email.com'; $phone = '+1 800 555 555'; //clean up phone number $phone = preg_replace("/[^0-9]/", '', $phone); $plan = 'europe'; $ip = '99.55.44.44'; $sendEmails = True; function addInfoToDatabase($token) {

我有以下PHP代码:

<?php
$email = 'email@email.com';
$phone = '+1 800 555 555';
//clean up phone number
$phone = preg_replace("/[^0-9]/", '', $phone);

$plan = 'europe';
$ip = '99.55.44.44';
$sendEmails = True;

function addInfoToDatabase($token) {
        //function that adds data to temporary table. token is passed through

        //put new user info in database
        $mysqli = new mysqli('localhost', 'php', '', 'php');

        $stmt = $mysqli->prepare("INSERT INTO `temp_users` VALUES (?, ?, ?, ?, ?, ?, '')");
        $stmt->bind_param('ssssss', $email, $phone, $plan, $sendEmails, $token, $ip);
        mysqli_stmt_execute($stmt);
        mysqli_stmt_close($stmt);
}
addInfoToDatabase('24_tok');
?>

您试图在函数中使用变量
$email
$phone
$plan
$sendmails
$ip
,但这些变量仅在函数外部设置。这意味着它们是全局变量,因此只有将它们作为参数传递给函数时,才能访问它们

不这样做的结果是将
null
值传递到数据库。如果任何有问题的列定义为
notnull
(很可能是),则查询将失败。您可以通过运行以下代码来验证失败的原因:

echo 'error '.$mysqli->errno().': '.$mysqli->error().'<br/>';
echo'error'.$mysqli->errno()。:'.$mysqli->error()。

由于
+
登录
$phone='+1800 555 555',您可能需要使用双引号而不是单引号尝试将其替换为
$phone=“+1 800 555 555”我敢打赌它一定在尝试做一个数学方程式。并且还改变了
$ip='99.55.44.44'
$ip=“99.55.44.44”试试看。@Fred ii-刚刚试过。结果和以前一样。数据库中没有数据。@Fred ii-PHP不尝试用字符串进行数学运算。单引号和双引号的唯一区别在于转义序列和变量插值。它运行时不会返回错误——你不会检查错误,那么你怎么知道呢?好的,谢谢@Barmar-我认为引号会有所不同。足够公平;我同意这样会更好。我试图不把OP搞糊涂,但会屈服于同行的压力。或者,将变量放入函数本身,而不是使用
global
@艾德科特雷尔
echo 'error '.$mysqli->errno().': '.$mysqli->error().'<br/>';